https://pintia.cn/problem-sets/994805260223102976/problems/994805309963354112
3.9改进版本
#include<iostream>
#include<math.h>
using namespace std;
bool isPrime(int num){
for(int i=2; i<=sqrt(num); i++)
if(num % i == 0)
return false;
return true;
}
int main(){
int m, n, count=0;
cin >> m >> n;
for(int i=2; count<n; i++){
if(!isPrime(i)){
continue;
}
count ++;
if(count >= m){
cout << i;
if((count-m+1)%10==0 || count == n)
cout << endl;
else{
cout << " ";
}
}
}
return 0;
}
原版
这题输入m和n,打印出第m个到第n个质数,每行10个,空格隔开。我是把2独立出来算一个,后面在奇数中找质数进行打印。
#include<iostream>
#include<math.h>
using namespace std;
bool isPrime(int num){
if(num < 2){
return false;
}
if(num == 2){
return true;
}
for(int i=2; i<=sqrt(num); i++)
if(num % i == 0)
return false;
return true;
}
int main(){
int m, n, i=2, p=3, row_num=0;
cin >> m;
cin >> n;
if(m==1){
cout << 2;
row_num ++;
m ++;
if(n!=1)
cout << " ";
}
while(i<=n){
if(isPrime(p)){
i++;
}
if(m<i && isPrime(p)){
cout << p;
row_num ++;
if(i<n+1 && row_num != 10)
cout << " ";
if(row_num == 10){
cout << endl;
row_num = 0;
}
}
p += 2;
}
return 0;
}