首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java - Fibonacci素卡环

Java - Fibonacci素卡环
EN

Stack Overflow用户
提问于 2015-10-30 18:00:44
回答 4查看 606关注 0票数 1

我的指令是编写一个程序,它不仅仅是使用主要的方法来找到斐波纳契素数。但我被困在了一段时间的循环中。我发现2和3作为斐波纳契素数,但我被困在这个位置从那里开始。

代码语言:javascript
复制
    while ((b1 < f) && primeflag)
    {
        if (f % b1 == 0)
            primeflag= false;

这是完整的源代码。

代码语言:javascript
复制
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);


    }

}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-10-30 18:04:05

看看这个循环:

代码语言:javascript
复制
    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的值在循环中不会改变。这意味着你将陷入一个无限循环中!

你是故意这样做的吗?

代码语言:javascript
复制
    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;
    }
票数 4
EN

Stack Overflow用户

发布于 2015-10-30 18:05:29

代码语言:javascript
复制
   fb1 = fb2;
   fb2 = f;                    
   f = fb1 + fb2;

应该在{}之外不是素数,而且它一直在继续,永远不会增加。

票数 1
EN

Stack Overflow用户

发布于 2015-10-30 18:05:33

我不确定这种方法:

代码语言:javascript
复制
while ((b1 < f) && primeflag)
    {
        if (f % b1 == 0)
            primeflag= false;
    }

但是如果b1 =3和f= 7,则primeFlag = true,并且它永远不会结束,因为循环中没有任何变化。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33442221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档