所以我试图制作一些代码,它基本上是因为它们的数字很大。我试图将使用longs的代码转换为BigIntegers,但结果只返回了很多2和0。在这里。
package primes;
import java.math.BigInteger;
public class Primes {
public static void main(String[] args) {
BigInteger y = new BigInteger("0");
BigInteger count= new BigInteger("2");
BigInteger input = new BigInteger("12321");
BigInteger one = new BigInteger("1");
while(input.compareTo(input)!=1) {
y=input.mod(count);
System.out.println(y);
if(y.compareTo(y)==0) {
input=input.divide(count);
System.out.println(count);
} else if(y.compareTo(y)!=0) {
count.add(one);
}
}
}
}
好吧,我看到了count.add(一个)的问题;但我仍然不确定compareTo函数的工作原理。只是为了澄清每个循环应该做什么,我只是要粘贴适用于longs的正常运行脚本的代码。
package longprimes;
public class LongPrimes {
public static void main(String[] args) {
long input = 121L;
long count = 2;
long y;
while (input!=1){
y = input%count;
if(y==0){
input = input/count;
System.out.println(count);
}
else if(y!=0){
count++;
}
}
}
}
当我稍微更新一下BigInteger代码时,看起来发生了什么,它会影响它,但它不会分割输入,以便它只是继续找到剩余部分,但如果它是0,它没有' t实际上将输入分开以结束循环。
答案 0 :(得分:0)
看起来这是一项家庭作业,所以我只想指出一些事情:
input.compareTo(input)!=1
可能不是你想要的。理想情况下,当input
为1时,您希望完成循环。但是如果左边的数字小于,等于或大于另一个数字,compareTo
将返回-1,0或1。考虑这个条件实际返回的是什么。
y.compareTo(y)==0
是一回事。您正在将数字y
与自身进行比较。理想情况下,您希望与零进行比较。
count.add(one)
并没有真正做任何事情。考虑一下当你做的时候会发生什么
1 + 2;
您正在计算将one
添加到count
的结果,但您也忽略了结果。您可能希望将该结果保存在某处。