我要制作一个方法,列出数字2-100,其中列出了它们旁边所有数字的因子

时间:2015-10-26 15:34:13

标签: java

我要制作一个方法,列出数字2-100,其中列出了它们旁边所有数字的因子;如果没有因素则列出素数。

import javax.swing.JOptionPane;

public class Factors {
    public static void main(String[] args) {
        int limit = 100;
        for(int i=1; i <= 100; i++) {
            System.out.print(i + " ");
            if( i % 2 != 0)
                System.out.println("Prime");
            else
                System.out.println("");
        }
    }
}

这是我到目前为止所有的,我的输出是这样的:

1 Prime
2 
3 Prime
4 
5 Prime
6 
7 Prime
8 
9 Prime
10 
11 Prime
12 
13 Prime
14 
15 Prime
16 
17 Prime

显然这不对!

1 个答案:

答案 0 :(得分:0)

要列出所有数字的倍数,请使用重复添加。

3 5 7...

这称为Sieve Of Eratosthenes,我的朋友。

你的问题是你只考虑2的因素,boolean[]primes = new boolean[max]; Arrays.fill(primes, true); for(int i = 2; i * i < max; ++i) if(primes[i])//consider all those numbers which are marked prime till then for(int j = i * i; j < max; j += i)//get all factors of that number primes[j] = false;//mark all it's factors as not primes for(int i = 2; i < max; ++i) if(primes[i]) System.out.println(i + " Prime"); else System.out.println(i);

你必须考虑所有未标记为素数的那些。

'(?i).*{0}.*'