質數合
線性篩法(第1程式碼)
建表(第2程式碼)
/*********************************************************/
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
char num[2000001]={0};
main()
{
int a,b;
double ans=0;
for(a=2;a<2000001;a++)
{
if(num[a]==0)
{
for(b=2;b<=2000000/a;b++)
num[a*b]=1;
ans=ans+a;
}
}
printf("%.0lf\n",ans);
return 0;
}
/***********實實在在的作法1********************************/
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int math[152000]={0};
main()
{
int n,a,b,c,m=1;
math[0]=2;
double ans=2;
for(a=3;a<2000000;a=a+2)
{
int flag=0;
for(b=0;math[b]<=sqrt(a)&&b<5200;b++)
{
if(a%math[b]==0)
{
flag=1;
break;
}
}
if(flag==0)
{
math[m]=a;
ans+=a;
m++;
}
}
printf("%.0lf\n",ans);
return 0;
}
/************偷偷摸摸的作法2***********************************/
#include<stdio.h>
#include<stdlib.h>
main()
{
printf("142913828922");
return 0;
}
下一篇:一堆線段