素数循环返回空白字符串

时间:2014-03-07 04:38:43

标签: java for-loop

public String primeNumbers()
{
    //create variable to be returned
    String prime = "";
    int num = 0;

    for(int i = 0; i < this.limit; i++)
    {
        num = this.limit - i;
        for(int count = 2; count < this.limit; count++)
        {
            if ( num % count == 0)
            {
                count = this.limit + 1;

            }
            else if ( num == count)
            {
                prime += num + ", ";
            }

        }


    }


    return prime;
}

这样做的目的是产生一个介于1和上限之间的素数列表,这是私有变量限制。但是,当我运行代码时,我收到一条空白消息作为返回。这是为什么?

2 个答案:

答案 0 :(得分:0)

我不太了解你的代码的逻辑,但是使用辅助方法很好。

public String primeNumbers()
{
    //create variable to be returned
    String prime = "";

    for(int i = 0; i < this.limit; i++)
    {
        if(this.isPrime(i)){
            prime += i + ", ";
        }
    }
    return prime;
}

private boolean isPrime(int number){
    if(number <= 1){
        return false;
    } else if(number == 2){
        return true;
    }
    for(int i = 2; i < number; i++){
        if(number%i == 0){
            return false;
        }
    }
    return true;
}

isPrime()很天真,绝对可以优化。

答案 1 :(得分:0)

昨天有一个关于这个的问题,最后我写这篇文章作为自己的复习。

 public class Erasthotenes
    {
        private int range;
        private boolean[] nums;

        public Erasthotenes(int range)
        {
            this.range = range;
            nums = new boolean[range];
            for(int i = 0; i < nums.length; ++i)
            {
                nums[i] = true;
            }
            nums[0] = nums[1] = false;
        }

        public void sieve()
        {
            int root = (int) Math.sqrt(range);
            for(int i = 2; i < root; ++i)
            {
                for(int j = i + 1; j < range; ++j)
                {
                    if(j % i == 0)
                    {
                        nums[j] = false;
                    }
                }
            }
        }

        public void printPrimes()
        {
            for(int i = 0; i < nums.length; ++i)
            {
                if(nums[i] == true)
                {
                    System.out.print(i + ", ");
                }
            }
        }
    }

http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes