我一直在研究一些java代码来显示素数。我已经知道它显示0到100之间的所有素数。
我如何制作它以便我可以将变量设置为20,它会显示前20个素数。
我的代码:
public class PrimeNumber {
/**
* @param args the command line arguments
*/
private static boolean prime = true;
private static int count = 20;
public static void main(String[] args) {
for (int i = 2; i < 100; i++) {
for (int j = 2; j < 100; j++) {
if(i == j)
{
continue;
}
if (i % j == 0) {
prime = false;
break;
} else {
prime = true;
}
}
if (prime) {
System.out.println(i + " is a Prime:");
}
}
}
}
答案 0 :(得分:0)
对于OP代码,这是最简单的实现。
降低count
变量并在外部for loop
中检查它,直到它达到zero
。内部for循环也应仅检查(i/2 + 1)
的当前值。您可以随时跳过另一半,该值将除以i
本身的数字。
public class PrimeNumber {
/**
* @param args the command line arguments
*/
private static boolean prime = true;
private static int count = 20;
public static void main(String[] args) {
for (int i = 2; count>0; i++) {
for (int j = 2; j < i/2 + 1; j++) {
if (i % j == 0) {
prime = false;
break;
} else {
prime = true;
}
}
if (prime) {
System.out.println(i + " is a Prime:");
count--;
}
}
}
}
答案 1 :(得分:0)
为此,您必须在i的for循环中设置上限值。就像你只想要前20个素数所以
public class PrimeNumber {
private static boolean prime = true;
private static int count = 20;
public static void main(String[] args) {
for (int i = 2; i < count+1; i++) {
for (int j = 2; j < 100; j++) {
if(i == j)
{
continue;
}
if (i % j == 0) {
prime = false;
break;
} else {
prime = true;
}
}
if (prime) {
System.out.println(i + " is a Prime:");
}}}}