pat乙级1013数素数
本题考查的是素数的问题,我刚开始想用筛选法做,发现太难了,走了极大的弯路,干脆直接暴力枚举,简单快捷,当然这只是我能想到的最简单的办法,肯定有大牛比我厉害啦,哈哈。(刚开始输出格式搞错,pat对输出格式的要求还是很高的)
#include<iostream>
using namespace std;
#include<math.h>
#define maxsize 1000000
/*判断素数*/
bool isprime(int n)
{
if(n==2 || n==3)
return true;
int a = sqrt(n);
for(int i=2;i<=a;i++){
if(n%i == 0)
return false;
}
return true;
}
int main()
{
int n,m,num=0,count=0;
cin>>n>>m;
for(int i=2;i<maxsize;i++)
{
if(isprime(i))
{
num++;
if(num>m)
return 0; //打印到了第m个素数直接退出
if(num>=n)
{
if(count==0)
{
cout<<i;
count++;
}
else
{
cout<<" "<<i;
count++;
}
if(count>0 && count%10 == 0)
//注意要换行 而且是count>0时,这里每输出一行把count置0
{
cout<<endl;
count=0;
}
}
}
}
return 0;
}