#include <stdio.h>
int isprime(int i) {
int ret = 1;
int x;
for (x = 2; x * x <= i; x++) {
if (i % x == 0) {
ret = 0;
break;
}
}
return ret;
}
int main() {
int L, number, a;
scanf("%d", &L);
int prime[L];
int sum = 0, cnt = 0, cnt1 = 0;
for (number = 2; number <= L; number++) {
if (isprime(number)) {
prime[cnt++] = number;
}
}
for (int m = 0; m <= cnt ; m++) {
sum += prime[m];
if (sum <= L) {
cnt1++;
} else {
break;
}
}
for (int n = 0; n < cnt1; n++) {
printf("%d \n", prime[n]);
}
printf("%d", cnt1);
return 0;
}
问题出在哪里,是第二个循环吗,第二版我用```
for (int m = 0; m < cnt && sum + prime[m] <= L; m++) {
sum += prime[m];
cnt1++;
}
通过了