Java 我如何让这个for循环只打印素数?
我需要它做的是打印所有的素数,如果输入也是素数,则从1开始,到输入结束。下面是我的代码:Java 我如何让这个for循环只打印素数?,java,Java,我需要它做的是打印所有的素数,如果输入也是素数,则从1开始,到输入结束。下面是我的代码: static void primeNumbers(int n) { boolean isPrime; System.out.println("All the prime numbers up to " + n + " are -->"); for (int prime = 2; prime < n; prime = prime++) { if (n
static void primeNumbers(int n) {
boolean isPrime;
System.out.println("All the prime numbers up to " + n + " are -->");
for (int prime = 2; prime < n; prime = prime++) {
if (n % prime == 0) {
isPrime = false;
}
if(isPrime == true){
System.out.println(prime);
}
}
}
静态空素数(int n){
布尔互质;
System.out.println(“所有到“+n+”的素数都是-->”;
对于(int prime=2;prime
我的老师说我需要做一个嵌套的for循环,但我不知道该放什么进去。我还收到一个错误消息,说我上次使用iPrime时没有初始化。您需要执行类似操作才能使程序正常工作
static void primeNumbers(int n) {
boolean isPrime = true;
System.out.println("All the prime numbers up to " + n + " are -->");
for (int prime = 2; prime < n; prime++) {
if (n % prime == 0) {
isPrime = false;
}else{
isPrime = true;
}
if(isPrime){
System.out.println(prime);
}
}
}
静态空素数(int n){
布尔值isPrime=true;
System.out.println(“所有到“+n+”的素数都是-->”;
对于(int prime=2;prime
您需要实际检查素数,而不仅仅是查看数字是否是n的因子:
静态布尔值isPrime(int n){
if(n<2){
返回false;
}
如果(n%2==0){
返回n==2;
}
对于(int k=3;k*k有必要初始化iPrime
埃拉托斯特尼斯筛是著名的素数求法
我想下面的网址会对你有所帮助
以下是解决方案之一
public static void main(String[] args) {
int n = 23;
boolean[] isPrime = new boolean[n + 1];
for (int i = 1; i <= n; i++) {
isPrime[i] = true;
}
for (int i = 2; i <= n / i; i++) {
if (isPrime[i]) {
for (int j = i; j <= n / i; j++) {
isPrime[i * j] = false;
}
}
}
for (int i = 1; i <= n; i++) {
if (isPrime[i]) {
System.out.println(i);
}
}
}
publicstaticvoidmain(字符串[]args){
int n=23;
布尔值[]isPrime=新布尔值[n+1];
对于(int i=1;i),每当声明变量时,总是需要对其进行初始化。例如,布尔值isPrime=false;这实际上并不检查素数。这只是检查“素数”是否为是n
的一个因子。当我使用此代码时,它会无限打印数字2。您试图作为参数传递的数字是多少。这对我来说很好。用户输入的任何数字对我来说都很好。您能告诉我您做了什么吗?请您的帖子解释它是如何解决问题的。谢谢,我对我的解决方案的版本。