.net框架4显然将包含一个BigInteger类.但是,我似乎无法弄清楚它是否会一成不变.我似乎也无法决定这是否是一件好事.
不变性有很多好处,特别是对于像"大型"这样"像价值一样"的东西.另一方面,基本操作必须是高效的,以便尽可能快地使像PowerMod这样的高成本操作.原地添加比不可变添加更快.我目前倾向于不变性作为库类的更好选择(想想String).
有谁知道它是否会一成不变?你认为它应该是不可改变的吗?
如果我使用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) 我试图打印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.仍然没有工作......
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=12816并d=1开始.
但即使在等待很长时间之后,循环仍在执行.可能是什么错误?
在尝试使用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) 如何找到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) 适用于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?
我需要一种更快捷的方式将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分钟.有什么方法可以加快速度吗?
我有一个int数组.有没有办法将这个int数组直接转换为BigInteger数组而不迭代元素?
我写了一个测试代码来检查相等性.我检查过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) biginteger ×10
java ×8
.net ×1
arrays ×1
bigdecimal ×1
c# ×1
compare ×1
file-io ×1
immutability ×1
int ×1
math ×1
numbers ×1
string ×1
zero ×1