在此代码中,用户输入第n个元素,其中所有素数或非素数的组合,但我想要添加或只有素数的总和...
public class prime {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
System.out.println("enter the size of an array");
int abc = in.nextInt();
int num[] = new int[abc];
int a = 0, sum = 0;
for (int k = 0; k < num.length; k++) {
System.out.println("enter the value" + (k + 1));
num[k] = in.nextInt();
}
for (int i = 0; i < num.length - 1; i++) {
for (int j = 2; j < i; j++) {
if (num[i] % i == 0) {
a = 1;
break;
}
}
if (a == 0) {
sum = sum + i;
}
}
System.out.println("number is prime" + sum);
}
}
答案 0 :(得分:0)
您的计划中存在逻辑错误。
1):如果设置for
,则在内部a
循环中,它将始终包含值1
。因此,你必须纠正它。 (即在语句0
之后将值a
重新分配给sum=sum+i
2):sum
应该积累素数元素的值。因此sum=sum+i
- &gt; sum=sum+num[i];
此外,在内部for
循环中,您可以设置条件j<sqrt(i)
以减少程序的运行时间。假设您可以执行所有必要的操作,以使代码可以运行。