解题思路: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语言程序设计教程(第三版)课后习题11.1 (C语言代码)浏览:822 |
C语言程序设计教程(第三版)课后习题10.4 (C语言代码)浏览:702 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:611 |
C语言程序设计教程(第三版)课后习题6.8 (C语言代码)浏览:798 |
printf基础练习2 (有点不明白)浏览:887 |
P1000 (C语言代码)浏览:911 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:594 |
2^k进制数 (C语言描述,蓝桥杯)浏览:1457 |
时间转换 (C语言代码)浏览:697 |
Quadratic Equation (C语言代码)浏览:1034 |