#include <stdio.h>
#include <math.h>
int main(void){
int M, N;
scanf("%d %d", &M, &N);
int a[10000];
a[0] = 2;
int i=3;
int flag = 0;
int p = 1;
while( p<1000){
int isPrime = 1;
for( int j=2; j<=sqrt(i); j++){
if( i%j == 0){
isPrime = 0;
break;
}
}
if( isPrime == 1){
a[p] = i;
p++;
}
i++;
}
for( int p=M-1; p<=N-1;p++){
printf("%d", a[p]);
flag++;
if( flag<10 && p<N-1){
printf(" ");
}else if( flag == 10 && p<N-1){
printf("\n");
flag = 0;
}
}
}
修改如下,供参考:
#include <stdio.h>
//#include <math.h>
int main(void) {
int M, N;
scanf("%d %d", &M, &N);
int a[10000] = {0};
//a[0] = 2;
int i = 2;
int flag = 0;
//int p;
while (i < 10000) {
int isPrime = 1;
for (int j = 2; j * j <= i; j++) {
if (i % j == 0) {
isPrime = 0;
break;
}
}
if (isPrime == 1) {
a[i] = 1;
//p++;
}
i++;
}
for (int p = M ; p <= N ; p++) {
if (a[p] == 1) {
printf("%c%5d", flag == 0 ? '\r' : (flag % 10 == 0 ? '\n' : ' '), p);
flag++;
}
//if (flag < 10 && p < N - 1) {
// printf(" ");
//}
//else if (flag == 10 && p < N - 1) {
// printf("\n");
// flag = 0;
//}
}
}