题目:令Pi表示第i个素数。现任给两个正整数M <= N <= 10000,请输出PM到PN的所有素数。
输入描述:输入在一行中给出M和N,其间以空格分隔。
输出描述:
输出从PM到PN的所有素数,每10个数字占1行,其间以空格分隔,但行末不得有多余空格。
解题思路:
其实拿到这个题不要怕,一看没什么是吧,就是在判断素数的基础上加了一些条件而已。所以解这个题我们先要会判断素数,这会了以后,我们定义一个变量来作为计数器,判断计数器是否满足条件,一旦满足就输出素数即可,一旦大于Pm就break;
/*纯c语言写的*/
#include<stdio.h>
#include<math.h>
int sushu(int k)
{
int i;
for(i=2;i<=sqrt(k);i++) /*这里一定要用sqrt函数这样可以避免数字太大,运行超时*/
if(k%i==0)
return 0;
return 1;
}
int main()
{
int i,j,sum=0,k,a=0,b=0;
int n,m;
scanf("%d %d",&n,&m);
for(i=2; ;i++)
{
if(sushu(i)==1)
{
sum+=1;
if(sum>=n && sum<m)
{
b+=1;
if(b==10)
{
printf("%d",i);
b=0;
}
else
{
printf("%d ",i);
}
a+=1;
}
if(sum==m)
{
printf("%d",i);
a+=1;
}
if(a==10)
{
printf("\n");
a=0;
}
}
if(sum>m)
{
break;
}
}
return 0;
}
我也不是高手就是想写点东西……..最近在刷PAT的题,就想写点东西充实一下,so,看看就好,如果对你有用,那么就请期待吧