相当标准的。生成第一个n素数,通过扫描器输入。
package main;
import java.util.Scanner;
public class Prime_Generator {
public static void main(String args[]) {
int n;
int status = 1;
int num = 3;
Scanner scanner = new Scanner(System.in);
System.out.print("First n primes: ");
n = scanner.nextInt();
if (n >= 1) {
System.out.print("First "+n+" prime numbers are: \n");
System.out.println(2);
}
for (int i = 2; i <=n;) {
for (int j = 2; j <= Math.sqrt(num); j++) {
if (num%j == 0) {
status = 0;
break;
}
}
if (status != 0) {
System.out.println(num);
i++;
}
status = 1;
num++;
}
}
}
我的问题是:
发布于 2016-08-05 21:01:57
有两件事:
首先,您注意到,如果我输入"1“作为输入,我将得到"2”而不是"2“。
其次,检查数字n与从2到sqrt(n)之间的所有数字的可分性。这很好,但是你可以通过跟踪你产生的所有素数来改进它。每当您发现p是素数时,就将它添加到素数列表中,称为primeList。现在,当您想要检查n是否为素数时,可以对primeList中sqrt小于或等于n的所有素数进行测试,这样可以保存要测试的素数。
关于寻找质数有很多先进的理论,但对于简单的理论来说,这就足够了。
发布于 2016-08-05 20:40:25
https://codereview.stackexchange.com/questions/137941
复制相似问题