素数求和

简介: 这是刚开始写的代码,有点长。

200万以内素数求和

这是刚开始写的代码,有点长。

#include <stdio.h>
#include <math.h>
/*
200万以内素数求和
*/ 
int main()
{
  int i;
  long long int p=0;
  int n,num,s,tmp=0;
  scanf ("%d",&n);  
  for (num=0;num<=n;num++)
{
  if(num ==2|| num==3 )//对2||3特殊处理 
  {
  p+=num;
  continue;}
{
    if(num %6!= 1&&num %6!= 5)//如果是素数,必然在6的旁边 
    continue;
    tmp=sqrt( num);
    for(i=2;i <=tmp; i++ )//在6的旁边也不一定是素数,再次进行判断 
    {s=0;
  if(num %i== 0)
    {
    s=1;
    break;
  }
  }
    if (s==0) //实现累加 
    p+=num;
} 
}
printf ("%lld",p);
return 0;
}

最后看到了网上一个代码,效率极高

然后敲了一遍

#include <stdio.h>
/*
  2000万内素数求和
*/ 
int a[20000001]={0};//定义一个20000001的容器 
int main()
{
  int i,j,n;
  long long p=0;
  scanf ("%d",&n);
  for (i=2;i*i<=n;i++)//从2开始,对其倍数标记 
  {
  if (a[i]==1) 
  continue;
  for (j=i*i;j<=n;j+=i)//进行标记
  a[j]=1;
  }
  for (i=2;i<=n;i++) 
  if (a[i]==0)//未标记的即为素数 
  p+=i;
  printf ("%lld",p);
  return 0;
}
目录
相关文章
|
5天前
质数
【10月更文挑战第22天】质数。
90 67
|
3天前
素数
【10月更文挑战第23天】素数。
13 5
|
6月前
|
存储 弹性计算 运维
对100 以内的所有正整数相加求和
【4月更文挑战第29天】
59 2
wustojc5004素数
wustojc5004素数
49 0
|
机器学习/深度学习 C语言
【C素数】素数(质数)和分解质因数
【C素数】素数(质数)和分解质因数
130 0
【C素数】素数(质数)和分解质因数
输出100以内的素数(质数)
输出100以内的素数(质数)
169 0
求自定义范围内的素数(质数)
判定数字是质数需要循环判断 因此需要定义(flag)用于记录循环的结果 结果如图
90 0
求自定义范围内的素数(质数)
求100以内质数或者更多
求100以内质数或者更多
102 0