题目描述
令Pi表示第i个素数。现任给两个正整数M <= N <= 10000,请输出PM到PN的所有素数。
输入描述:
输入在一行中给出M和N,其间以空格分隔。
输出描述:
输出从PM到PN的所有素数,每10个数字占1行,其间以空格分隔,但行末不得有多余空格。
输入例子:
5 27
注意5和27不是素数范围,是第几个素数
输出例子:
11 13 17 19 23 29 31 37 41 43
47 53 59 61 67 71 73 79 83 89
97 101 103
注意时间限制,很容易超时。
循环次数要尽量少,两层for循环全循环完肯定超时。
#include <stdio.h>
#include <math.h>
int main()
{
int n,m,i,j,num=0,num2=0;
scanf("%d%d",&m,&n);
for(i=2;num<=n;i++)
{
for(j=2;j<=sqrt(i);j++)
{
if(i%j==0)
{
break;
}
}
if(j>sqrt(i))
{
num++;
if(num>=m&&num<n)
{
num2++;
printf("%d",i);
if(num2%10!=0)
{
printf(" ");
}
if(num2%10==0)
{
printf("\n");
}
}
if(num==n)
{
printf("%d",i);
return 0;
}
}
}
return 0;
}
/**************************************
* 小柳学渣
* 2019/1/25 0:20
*************************************/