标签: biginteger

System.Numerics.BigInteger会不可变吗?应该是吗?

.net框架4显然将包含一个BigInteger类.但是,我似乎无法弄清楚它是否会一成不变.我似乎也无法决定这是否是一件好事.

不变性有很多好处,特别是对于像"大型"这样"像价值一样"的东西.另一方面,基本操作必须是高效的,以便尽可能快地使像PowerMod这样的高成本操作.原地添加比不可变添加更快.我目前倾向于不变性作为库类的更好选择(想想String).

有谁知道它是否会一成不变?你认为它应该是不可改变的吗?

.net biginteger immutability

1
推荐指数
1
解决办法
434
查看次数

基于compareTo的调用方法?

如果我使用compareToa BigInteger,我如何从结果中选择要调用哪个函数?(-1 = funcA,+ 1 = funcB,0 =无功能).

特别是:这有什么问题?

doCompare() {
   BigInteger x = new BigInteger(5);
   BigInteger y = new BigInteger(10);

   //syntax error token "<", invalid assignment operator
   x.compareTo(y) < 0 ? funcA() : funcB();
}

void funcA();
void funcB();
Run Code Online (Sandbox Code Playgroud)

java compare biginteger

1
推荐指数
1
解决办法
102
查看次数

为什么java.Math.BigInteger在一定限制后出错?

我试图打印2 ^ n中的数字总和,n = 1到1000.这就是我所做的.

public static void main(String[] args) {
    int n = 1000;
    for (int i = 1; i < n; i++) {
        BigInteger power = BigInteger.valueOf((int)Math.pow(2, i));
        int sum = 0;
        while (power.intValue() > 0) {
            sum += power.intValue() % 10;
            power = power.divide(BigInteger.valueOf(10));
        }
        System.out.print(sum + "  ");
    }
}
Run Code Online (Sandbox Code Playgroud)

它只能工作到大约2 ^ 30左右,然后打印相同的结果,46,其余的.

我在C中使用"long long"尝试过类似的东西,并且在类似限制之后打印0.

根据答案,我改变了

BigInteger power = BigInteger.valueOf((int)Math.pow(2, i));
Run Code Online (Sandbox Code Playgroud)

BigInteger power = BigInteger.valueOf(2).pow(i);
Run Code Online (Sandbox Code Playgroud)

和46改为0.就像C.仍然没有工作......

java biginteger

1
推荐指数
2
解决办法
245
查看次数

BigInteger循环无限执行

while(true) {
    if(((d.multiply(e)).mod(phi1)).equals(BigInteger.ONE))
        break;
    d.add(BigInteger.ONE);
}
Run Code Online (Sandbox Code Playgroud)

我的程序中有以下代码,这意味着

while(true) {
    if((d*e)%phil==1) 
        break;
    d++;
}
Run Code Online (Sandbox Code Playgroud)

这里e=17,phil=12816d=1开始.

但即使在等待很长时间之后,循环仍在执行.可能是什么错误?

java biginteger

1
推荐指数
1
解决办法
58
查看次数

Java中两个BigIntegers的关系运算

在尝试使用BINARY SEARCH方法计算BigInteger的平方根时,我陷入了如何使用两个BigIntegers来满足比较操作的问题.就像,我想检查两个BigInteger变量之间的相等,大于或小于条件.

这是错误的代码片段,粗略地了解我想要执行的内容.任何解决问题的努力都将受到赞赏.

public static BigInteger squareroot(BigInteger bi){
    //BigInteger bkl;
    BigInteger low,high,mid;
low=ONE;
high=bi.add(ZERO);
while(low<=high)
{
    mid =(low.add(high)).divide(new BigInteger("2"));
    if(mid.multiply(mid).equals(bi))
        return mid;
    if(mid.multiply(mid) > bi)
        high = mid -1 ;
    else
        low = mid + 1;
}
return mid;
}
Run Code Online (Sandbox Code Playgroud)

java biginteger binary-search comparison-operators

1
推荐指数
1
解决办法
1215
查看次数

在N中找到第一个非零数字!在Java中

如何找到N.N的阶乘的第一个非零数可以在1到2147483647的范围内.输出返回一个整数.

EX:

findFirstNoneZeroNumberOfTheFactorial(4) = 4; // because 4! = 24
findFirstNoneZeroNumberOfTheFactorial(5) = 2; // because 5! = 120
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

import java.math.BigInteger;

public class Solution {
    public static int findFirstNoneZeroNumberOfTheFactorial(int n) {
        BigInteger fact = null;
        for (int i = 1; i <= n; i++) {
            fact = fact.multiply(BigInteger.valueOf(i));
        }
        String sFact = String.valueOf(fact);
        for (int i = sFact.length() - 1; i >= 0; i--) {
            if (sFact.charAt(i) != '0') {
                int result = Character.getNumericValue(sFact.charAt(i));
                return result;
            }
        }
        return 0; …
Run Code Online (Sandbox Code Playgroud)

java string math biginteger

1
推荐指数
1
解决办法
1120
查看次数

为什么BigDecimal.ZERO未缩放?

适用于Javadoc BigDecimal.ZERO说,The value 0, with a scale of 0.正如其名称所暗示人们可以预期,BigDecimal.ZERO应该返回值0.0

我也知道这BigDecimal.ZERO是编码的方式:

private static final BigDecimal zeroThroughTen[] = {
        new BigDecimal(BigInteger.ZERO,         0,  0, 1),
        new BigDecimal(BigInteger.ONE,          1,  0, 1),
...
}

// Constants
/**
 * The value 0, with a scale of 0.
 *
 * @since  1.5
 */
public static final BigDecimal ZERO =
        zeroThroughTen[0];
Run Code Online (Sandbox Code Playgroud)

我不明白为什么在Java中决定BigDecimal.ZERO返回未缩放的零而不是返回十进制零(默认情况下至少使用缩放1,即0.0).

什么是需要,BigDecimal.ZERO并且BigInteger.ZERO两者都0随着规模返回价值0

java biginteger bigdecimal zero

1
推荐指数
1
解决办法
2851
查看次数

将一个非常大的BigInteger快速写入.txt文件

我需要一种更快捷的方式将160万位BigInteger输出到文件中.我现在正在使用此代码.

FileStream fs1 = new FileStream("C:\\Output\\Final\\BigInteger.txt",  FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter writer = new StreamWriter(fs1);
writer.WriteLine(big);
writer.Close();
Run Code Online (Sandbox Code Playgroud)

输出160万位数字大约需要5分钟.有什么方法可以加快速度吗?

c# file-io biginteger

1
推荐指数
1
解决办法
319
查看次数

从int Array创建BigInteger数组

我有一个int数组.有没有办法将这个int数组直接转换为BigInteger数组而不迭代元素?

java arrays int biginteger

1
推荐指数
1
解决办法
2166
查看次数

BigInteger.ValueOf()返回缓存的对象?

我写了一个测试代码来检查相等性.我检查过Java doc,它说BigInteger是不可变的.检查静态工厂方法的文档,valueOf它看起来像返回已经缓存的不可变实例.那么为什么==在缓存的实例时返回false.

以下是适用valueOf于的Java文档BigInteger:

返回一个Big Integer,其值等于指定long的值.这种"静态工厂方法"优先于(长)构造函数提供,因为它允许重用常用的BigIntegers.

下面的代码将进入无限循环.

public static void main(String[] args) {
    while(true) {
        BigInteger a = BigInteger.valueOf(100);
        BigInteger c = BigInteger.valueOf(100);
        if (a == c) {
            break;
        }
 }
Run Code Online (Sandbox Code Playgroud)

java numbers biginteger

1
推荐指数
1
解决办法
376
查看次数