1. 自己写的c++,在dev中运行ok,但提交错误
#include <iostream>
#include <cmath>
using namespace std;
int isPrime(int n);
int main(){
int m, n, cnt, i = 2;
cin >> m >> n;
do{
if(isPrime(i)){
cnt++;
if(cnt >= m){
printf("%d%s",i,(((cnt-m+1) % 10) == 0)?"\n":" ");
}
}
i++;
}while(cnt < n);
return 0;
}
int isPrime(int n){
int flag = 0;
int i;
for(i = 2; i <= sqrt(n); i++){
if( n % i == 0){
break;
}
}
if(n > 1 && i > sqrt(n)){
flag = 1;
}
}
2. 参考
https://www.jianshu.com/p/ad431345b3f4
#include<stdio.h>
#include<math.h>
int isPrime(int n);
int main(){
int m, n;
scanf("%d %d", &m, &n);
int cnt1 = 0, cnt2 = 0; //cnt1用来记录遍历得到的总素数,cnt2用来记录10个换行
int i = 2;
while(cnt1 < n){
if(isPrime(i)){
cnt1++;
if(cnt1 >= m){
cnt2++;
printf("%d", i);
if(cnt2 % 10 == 0){
printf("\n");
}
else if(cnt1 != n){
printf(" ");
}
}
}
i++;
}
return 0;
}
int isPrime(int n){
int flag = 1;
if(n <= 1) flag = 0;
for(int i = 2; i <= sqrt(n); i++){
if(n % i == 0){
flag = 0;
break;
}
}
return flag;
}
本文提供了两种使用C++实现的素数筛选与打印方法。一种是在Dev环境中运行正常,但在提交时遇到错误的代码;另一种是参考代码,通过判断是否为素数并按特定格式输出。两段代码都包含了主函数和判断素数的辅助函数,详细展示了如何从输入的范围内筛选并打印素数。
611

被折叠的 条评论
为什么被折叠?



