题目描述
输出n到m之间所有素数的个数和所有的素数
输入
两个数,n,m(n!=m),n,m均是整型
多组测试数据
输出
输出个数,和所有的素数,格式看样例。
样例输入
3 5 7 9
样例输出
2 3 5 1 7
提示
不会出现没有素数的情况且最后一个数后面没空格
代码
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
int m,n,t;
while(~scanf("%d%d",&m,&n))
{
if(m>n)
{
t=m;
m=n;
n=t;
}
fun1(m,n);
fun2(m,n);
}
}
void fun1(int m,int n)//统计素数的个数
{
int flag;
int s=0;
for(int i=m;i<=n;i++)
{
flag=0;
for(int j=2;j<sqrt(i+1);j++)
{
if(i%j==0)
{
flag=1;
break;
}
}
if(flag==0)
{
s++;
}
}
printf("%d\n",s);
}
void fun2(int m,int n)//打印素数
{
int flag;
int s=0;//这里的s的作用发生改变,作为第二个标记
for(int i=m;i<=n;i++)
{
flag=0;
for(int j=2;j<sqrt(i+1);j++)
{
if(i%j==0)
{
flag=1;
break;
}
}
if(flag==0)
{
if(s==0)//判断是否是第一个素数
{
printf("%d",i);
s++;//第一个素数出现让s改变,执行else语句
}
else
{
printf(" %d",i);
}
}
}
printf("\n");
}