题目描述
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]);elseprintf("%d",a[i]);}printf("\n");}elseprintf("nothing!\n");//没有素数输出nothing!}return 0;
}
运行结果
今天是忙碌的一天啊,上午在进行网络安全比赛,下午在参加蓝桥杯选拔赛,博客咱必须得坚持写。越努力越幸运,加油吧!!!----------2023.11.25