我要制作一个方法,列出数字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
显然这不对!
答案 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}.*'