我的指令是编写一个程序,它不仅仅是使用主要的方法来找到斐波纳契素数。但我被困在了一段时间的循环中。我发现2和3作为斐波纳契素数,但我被困在这个位置从那里开始。
while ((b1 < f) && primeflag)
{
if (f % b1 == 0)
primeflag= false;这是完整的源代码。
public class stadfcs {
public static void main(String[] args) {
System.out.println("Fibonacci Number and Prime Number Finder from 2 - 100000");
int fb1 = 1; int fb2 = 1; int f =fb1 + fb2;
while (f <= 100000)
{
if (isPrime(f)) {
System.out.println(f + " is a prime number and a Fibonacci Number!");
fb1 = fb2;
fb2 = f;
f = fb1 + fb2;
}
}
}
private static boolean isPrime(int f) {
boolean primeflag = true;
if ((f%2==0) && (f>3))
primeflag = false;
int b1 = 3;
while ((b1 < f) && primeflag)
{
if (f % b1 == 0)
primeflag= false;
}
b1+=2;
return primeflag;
}
private static int fib(int fb1, int fb2) {
return(fb1 + fb2);
}
}发布于 2015-10-30 18:04:05
看看这个循环:
while (f <= 100000)
{
if (isPrime(f)) {
System.out.println(f + " is a prime number and a Fibonacci Number!");
fb1 = fb2;
fb2 = f;
f = fb1 + fb2;
}
}注意,如果f不是素数,那么f的值在循环中不会改变。这意味着你将陷入一个无限循环中!
你是故意这样做的吗?
while (f <= 100000)
{
if (isPrime(f)) {
System.out.println(f + " is a prime number and a Fibonacci Number!");
}
fb1 = fb2;
fb2 = f;
f = fb1 + fb2;
}发布于 2015-10-30 18:05:29
fb1 = fb2;
fb2 = f;
f = fb1 + fb2;应该在{}之外不是素数,而且它一直在继续,永远不会增加。
发布于 2015-10-30 18:05:33
我不确定这种方法:
while ((b1 < f) && primeflag)
{
if (f % b1 == 0)
primeflag= false;
}但是如果b1 =3和f= 7,则primeFlag = true,并且它永远不会结束,因为循环中没有任何变化。
https://stackoverflow.com/questions/33442221
复制相似问题