我正在尝试用Java创建一个简单的程序,将所有素数(跳过数字2)输出到数字AggregationLevelConfiguration.HelperCodeType
。它没有用,我没有想法。如果有人可以查看我的代码并告诉我问题是什么,我会非常感激。
n
答案 0 :(得分:0)
只需在notAPrime
内声明for(int i = n; i > 2; i--)
,使其成为每个候选人的本地候选人。
现在你增加notAPrime
并且永远不会将其重置为零。
答案 1 :(得分:0)
试试这个
public class primeNum {
public static void main(String[] args) {
int n = 50;
boolean prime;
System.out.println("All prime numbers before number " +n+ " are : ");
for(int i = n; i > 2; i--){
prime = true;
for(int j = 2; j < i; j++){
if(i % j == 0){
prime = false;
}
}
if(prime){
System.out.println(i);
}
}
}
}
请注意,我将“notAPrime”变量从int更改为boolean并更改为一个告诉您其含义的名称。如果你只增加“notAPrime”整数,你永远不会得到任何想要的结果。 顺便说一下,这是一个修补程序,你得到了一个更正的代码的第一种形式。请记住,2也是素数,你的代码忽略了这一点。 只需要工作一点;)
答案 2 :(得分:-1)
你的for循环中缺少“中断”。
public class primeNum {
public static void main(String[] args) {
int n=50;
int notAPrime=0;
System.out.println("All prime numbers before number " +n+ " are : ");
for(int i=n; i>2; i--){
for(int j=2; j<i; j++){
if(i%j==0){
notAPrime++;
break; //your program is missing this statement
}
}
if(notAPrime==0){
System.out.print(i + " ");
}
notAPrime=0; //In your program it is inside the if statement which makes it incorrect.
}
}
}
输出: 50号之前的所有素数都是: 47 43 41 37 31 29 23 19 17 13 11 7 5 3
您可以通过进行以下更改来提高您的计划效率:
public class primeNum {
public static void main(String[] args) {
int n=50;
int notAPrime=0;
System.out.println("All prime numbers before number " +n+ " are : ");
for(int i=n; i>2; i--){
if(i%2==0){
continue;
}
for(int j=3; j<i; j+=2){
if(i%j==0){
notAPrime++;
break;
}
}
if(notAPrime==0){
System.out.print(i + " ");
}
notAPrime=0;
}
}
}