问题描述
- 求第m个到第n个素数之间的素数和,求帮忙看下哪里错了 提取数组求和的时候总是在数组中出现0
-
public class All {
public static void main(String[] args) {
int a[] = new int[200];
//将前200个数中的素数提取出来放入数组a中
for(int i = 1 ; i < 200 ; i ++){
boolean isPrime = true;
for(int k = 2 ; k < i ; k ++){
if( i % k == 0){
isPrime = false;
break ;
}
}
if(isPrime){
a[i-1] = i;
System.out.println(a[i-1]); //打印确认
}
}// 输入两个数 m,n 求第m个素数到底n个素数之间的素数和 Scanner small = new Scanner(System.in); Scanner large = new Scanner(System.in); int m = small.nextInt(); int n = large.nextInt(); int sums = 0 ; int suml = 0; int sum = 0; for(int i = 0 ; i < m ; i ++){ sums += a[i]; System.out.print(a[i]+"*"); } for(int i = 0 ; i < n ; i ++){ suml += a[i]; System.out.print(a[i]+" "); } sum = suml - sums; System.out.println(sum); }
}
解决方案
加个变量控制一下就行了。
public class All {
public static void main(String[] args) {
int a[] = new int[200];
int index = 0;
// 将前200个数中的素数提取出来放入数组a中
for (int i = 1; i < 200; i++) {
boolean isPrime = true;
for (int k = 2; k < i; k++) {
if (i % k == 0) {
isPrime = false;
break;
}
}
if (isPrime) {
a[index++] = i;
System.out.println(a[index-1]); // 打印确认
}
}
// 输入两个数 m,n 求第m个素数到底n个素数之间的素数和
Scanner small = new Scanner(System.in);
Scanner large = new Scanner(System.in);
int m = small.nextInt();
int n = large.nextInt();
int sums = 0;
int suml = 0;
int sum = 0;
for (int i = 0; i < m; i++) {
sums += a[i];
System.out.print(a[i] + "*");
}
for (int i = 0; i < n; i++) {
suml += a[i];
System.out.print(a[i] + " ");
}
sum = suml - sums;
System.out.println(sum);
}
}
解决方案二:
出现0不正常吗,
if(isPrime){//这里只有符合条件的才更新数组a
a[i-1] = i;//所以如果i是198是偶数,那a[197]就是0
当然,你写的代码效率就先不说,答案应该没问题。
解决方案三:
你这个是因为你的素数都放到数组里面了,不是素数的为0,而你取值的时候是没有考虑0的。你取得值有可能是0.
时间: 2024-12-09 07:56:09