素数求和

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

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;
}
目录
相关文章
|
4月前
|
Python
累加求和 1~ n求和
累加求和 1~ n求和
86 4
|
7月前
|
存储 弹性计算 运维
对100 以内的所有正整数相加求和
【4月更文挑战第29天】
94 2
|
7月前
|
人工智能
游游的选数乘积
游游的选数乘积
68 3
【Leetcode-67. 二进制求和-69.x的平方根】
【Leetcode-67. 二进制求和-69.x的平方根】
58 0
|
7月前
PTA-统计素数并求和
该程序统计并计算1至500之间整数M和N区间内的素数个数和。输入为两正整数M和N,输出为素数个数和它们的和。例如输入10 31,输出7 143。代码通过遍历区间,检查每个数是否能被2到自身-1之间的数整除,若不能则为素数,将其加入列表,最后输出列表长度(素数个数)和列表元素之和(素数和)。
93 0
|
7月前
PTA-第4章-2 统计素数并求和
该代码用于统计并求和给定区间[M, N](1≤M≤N≤500)内的素数。输入包含两整数M和N,输出为素数个数和它们的和。例如,输入10 31,输出7 143。代码通过遍历区间,检查每个数是否能被小于它的数整除来判断是否为素数。
108 0
|
7月前
[leetcode 数位运算] 2939. 最大异或乘积 M
[leetcode 数位运算] 2939. 最大异或乘积 M
|
C++
C++ 超大整数相加、相乘的精确求解,以及10000的阶乘
C++ 超大整数相加、相乘的精确求解,以及10000的阶乘
126 0
|
机器学习/深度学习 C语言
【C素数】素数(质数)和分解质因数
【C素数】素数(质数)和分解质因数
138 0
【C素数】素数(质数)和分解质因数
输出100以内的素数(质数)
输出100以内的素数(质数)
187 0