我想解决项目欧罗第三,但我很乱,逻辑停止计算。问题尝试项目欧罗#3
这里是项目欧拉三:
的13195的首要因素是5,7,13和29
号码是多少600851475143的最大质因数?
好吧,我创建了一个函数来检查,如果数字是素数:
public static boolean isPrime(int number) {
if (number % 2 == 0)
return false;
for (int i = 3; i*i <= number; i+=2) {
System.out.println("Dividing the number " + number + " by: " + i);
if (number % i == 0)
return false;
}
return true;
}
和一个函数来检查素数是多少的因素:
public static boolean isFactor(int number, int prime) {
if (number % prime == 0)
return true;
else
return false;
}
唯一的问题是主要功能,我试着这样的:
public static void main(String[] args) {
int number = 13195;
int i = 3;
do {
i++;
} while (isPrime(i) && isFactor(number, i) == false);
System.out.println(i);
}
我知道逻辑是不正确的,但我坚持了一个多小时。
我知道这里的主要目标是循环,找到一个素数,并检查这个素数是否是数字的一个因子并找到最大值,但停止条件是如果循环数是素数而不是数字的一个因素。
对不起,我很卡住:)谢谢!
为'number = 63'工作,您将获得最高因子为'4',但最高因子为'7'。检查你的条件退出'do while loop'。 –
[这里是你的答案](http://stackoverflow.com/questions/24772139/largest-prime-factor-euler-project?rq=1) –