#include <stdio.h>
#include <math.h>
#include <time.h>
main(){
int do_1(int num);
int do_2(int num);
int n=100000,i,j,sum=0,t0,t1,t;
printf("Please input the max number:");
scanf("%d",&n);
//Method_1
printf("---------------------------------------------\nNow running Method_1:\n");
t0=clock();
for(i=2;i<=n;i++){
if(do_1(i)){
// printf("%d ",i);
sum++;
}
}
t1=clock();
t=t1-t0;
printf("100%%\nThe total is %d numbers.\nMethod_1 spent %d ms\n",sum,t);
//Method_2
printf("---------------------------------------------\nNow running Method_2:\n");
sum=0;
t0=clock();
for(j=2;j<=n;j++){
if(do_2(j)){
// printf("%d ",j);
sum++;
}
}
t1=clock();
t=t1-t0;
printf("100%%\nThe total is %d numbers.\nMethod_2 spent %d ms\n",sum,t);
getchar();
}
int do_1(int num){
int i,s;
s=sqrt(num+1);
for (i=2;i<=s;i++)
if(num%i==0)
return 0;
return 1;
}
int do_2(int num){
int i,s;
if(num==2 || num==3){
return 1;
}else
if((num%6)!=1 && (num%6)!=5){
return 0;
}else
s=sqrt(num+1);
for(i=5;i<=s;i+=6)
if(num%i==0 || num%(i+2)==0)
return 0;
return 1;
}
【C】质数判断传统方法与高效率算法时间比对
最新推荐文章于 2022-11-17 01:04:49 发布