int a[5001] ;
int main(){
int m, n, k = 1;
scanf("%d",&n);
scanf("%d",&m);
for(int i = 2; i <= m; i++){
for(int j = i; j <=n; j=j+i){
a[j] = a[j]^1;
}
}
printf("%d",k);
for(int i = 2; i < n+1; i++)
if(a[i] == 0) printf(",%d",i);
}
拓展,若M=N,优化算法为:
int a[5001];
int main() {
int m, n, k = 1;
scanf("%d", &n);
scanf("%d", &m);
printf("%d", k);
for (int i = 2; (i * i) < n + 1; i++)
printf(",%d", i * i);
}