问题 E: 零基础学C/C++165——输出素数
题目描述
编写一个判断素数的函数,主函数中利用这个函数,打印出n与m之间的所有素数。
输入
多组测试数据,每组输入2个整数n和m,其中1 < n <= m <= 1000
输出
在一行输出n和m之间(包含n和m)的所有素数,中间用空格隔开,最后一个数后面没有空格。
样例输入 Copy
2 14
样例输出 Copy
2 3 5 7 11 13
题解
这道题与上面几道题目连着的,要注意素数的判定,不要忘了n为1,2的情况,之后就是简单的区间查找。
代码(AC)
点击查看代码
#include <stdio.h>
int prime(int n)
{
if(n==1) return 0;
if(n==2) return 1;
for(int i=2;i<n;i++)
{
if(n%i==0) return 0;
}
return 1;
}
int main()
{
int x,y;
while (scanf("%d%d",&x,&y)!=EOF&&!(x==0&&y==0))
{
int flag=0;
for(int i=x;i<=y;i++)
{
if(pr(i)!=0)
{
flag++;
}
}
int sign=1;
for(int i=x;i<=y;i++)
{
if(prime(i))
{
printf("%d",i);
if(sign<flag) printf(" ");
if(sign==flag) printf("\n");
sign++;//格式要注意
}
}
}
}