解题思路:1.偶数不是素数,而只有2是素数
2.在编写判断素数递归函数时,只要排除了偶数的可能性,可以从3开始判断
注意事项:直接使用判断素数的老方法,会出现超时
j>50000时要取模
参考代码:
#include <stdio.h>
#include <math.h>
typedef long long ll;
int ss(int n)
{
ll i,y;
if(n==4 || n==6 ||n==8 || n==9)
return 0;
if( n==3 ||n==5 || n==7)//
return n;
//大于9之后执行下面的代码,因为下面的代码不能判断上面的个别例子是否是素数
y=(ll)sqrt((double)n);
//在传入值的时候已经排除2的可能性,所以从3开始判断是否是素数
for(i=3;i<=y;i=i+2)
{
if(n%i==0)
return 0;
}
return 1;
}
int main (){
ll n;
ll sum=1,j,x=0;//x标记个数
scanf("%lld",&n);
j=2;
if(n==1)//排除素数2,因为2是偶数,j为奇数自增2之后不会等于2;
{
printf("2");
return 0;//退出程序
}
if(n>1)
{
sum=sum*2;//如果j从2开始,j=j+2就不是奇数了,所有直接排除即可
j=3;
n=n-1;//减去特例2
while(x!=n)
{
if(ss(j))
{
sum=sum*j%50000;
x++;
}
j=j+2;//排除偶数
}
}
printf("%lld",sum%50000);
return 0;
}0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复