题目描述
Lx给Xp出了一道难题,随便在0和1000000之间抽出两个数,估计在这两个数之间的素数的个数,如果猜测的结果和正确结果一样,Xp就可以得到Lx的一件礼物,你能猜对吗?编程实现一下吧!
输入:输入包括多组数据,每组数据包括两个整数m,n;
输出:输出包括两行,第一行是m,n之间的素数个数,第二行升序输出介于m,n之间的所有素数,之间用空格隔开,如果个数为0,则输出“nothing!”
样例输入 Copy
0 100 100 100
样例输出 Copy25 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 0 nothing!
提示:注意m可以大于n,也可以小于n;
多实例测试退出输入循环,用Ctrl+Z
程序代码
#include<stdio.h>
int Turbo(int x){//此函数用来判断是否为素数
int flag=1;
if(x==0||x==1) return 0;
for(int i=2;i<x;i++){
if(x%i==0){
flag=0;
break;
}
}
if(flag) return 1;
else return 0;
}
int main()
{
int m,n;
while(scanf("%d%d",&m,&n)!=EOF){//利用循环输入多组案例测试
int min=m<n?m:n;//找出最大值和最小值
int max=m>n?m:n;
int count=0;//count为一个计数器
int a[max];//数组a用来存放素数
for(int i=min;i<=max;i++){
if(Turbo(i))
{
a[count]=i;//当满足为素数时,将该数存入数组a中
count++;//同时count的值加1
}
}
printf("%d\n",count);//输出案例区间中素数的个数
if(count){//当count的值不为0,则输出素数
for(int i=0;i<count;i++){
if(i<count-1)
printf("%d ",a[i]);
else
printf("%d",a[i]);
}
printf("\n");
}
else
printf("nothing!\n");//没有素数输出nothing!
}
return 0;
}
运行结果
今天是忙碌的一天啊,上午在进行网络安全比赛,下午在参加蓝桥杯选拔赛,博客咱必须得坚持写。越努力越幸运,加油吧!!!----------2023.11.25