梦工场实验室 素数求和 神奇的素数筛选

问题 G: 素数求和

时间限制: 1 Sec  内存限制: 256 MB
提交: 142  解决: 30
[提交][状态][讨论版]

题目描述

输入一个自然数n,求小于等于n的素数之和

输入

输出

样例输入

2

样例输出

2

提示

测试样例保证 2 <= n <= 2,000,000

埃拉托斯特尼筛法(Sieve of Eratosthenes)

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<stack>
#include<queue>
#include<vector>
#include<algorithm>
using namespace std;

int a[2000005];
int main()
{
    int n,i,j;
    long long sum;
    scanf("%d",&n);
    a[1]=1;
    a[2]=0;
    for(i=2;i<=n;i++){
        if(a[i]==0){
            for(j=2;i*j<=n;j++){
                a[i*j]=1;    //筛法核心
            }
        }
    }
    sum=0;
    for(i=1;i<=n;i++){
        if(!a[i]){
            sum+=i;
        }
    }
    printf("%lld\n",sum);
    return 0;
}
/**************************************************************
    Problem: 1551
    User: 2016207228
    Language: C++
    Result: 正确
    Time:67 ms
    Memory:8896 kb
****************************************************************/
时间: 2024-10-09 09:31:54

梦工场实验室 素数求和 神奇的素数筛选的相关文章

素数求和问题

素数求和问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 现在给你N个数(0<N<1000),现在要求你写出一个程序,找出这N个数中的所有素数,并求和. 输入 第一行给出整数M(0<M<10)代表多少组测试数据 每组测试数据第一行给你N,代表该组测试数据的数量. 接下来的N个数为要测试的数据,每个数小于1000 输出 每组测试数据结果占一行,输出给出的测试数据的所有素数和 样例输入 3 5 1 2 3 4 5 8 11 12 13 14 15 16

2014-4-25 运行号:837134 素数求和

#include <iostream>#include <cstdio>#include <cstdlib>#include <string>#include <cmath>#include <cstring>#include <algorithm>using namespace std;bool pre_arry[1100];void pre_cnt() //素数筛{    memset(pre_arry,1,sizeo

素数求和

#include <iostream> using namespace std; int fun(int a) { if(a==1) return 0; for(int i=2;i<a;i++) { if(a%i==0) return 0; } return 1; } int main() { int x,M,N; cout<<"测试数据组数: "; cin>>M; while(M--) { int i,sum=0; cout<<&

nyist 22 素数求和

#include<stdio.h>int main(){int m,n,i,j,a,b;scanf("%d\n",&m);while(m--) // m组数据 { int sum=0; scanf("%d\n",&n); // 某一组 n个数 for(i=0;i<n;i++){ scanf("%d",&a); //分别输出这 n个数 变量afor(j=2;j<=a-1;j++) // 素数判定 if

南阳理工OJ之素数求和问题

---------------------------------------------- AC代码: 1 import java.util.Scanner; 2 3 public class Main { 4 5 public static void main(String[] args) { 6 7 preprocess(); 8 9 Scanner sc=new Scanner(System.in); 10 11 int times=sc.nextInt(); 12 while(time

一个关于素数的神奇性质

一 写在前面 1.1 本文内容 一个关于素数的神奇性质. 二 素数性质 性质:所有大于等于5的素数一定和6的倍数相邻!此性质可以被证明,证明方法可以去搜索相关资料.下面给出1000以内的素数,你可以验证一下看是不是这样. 有了这个性质,下面再给出一个其在质因数分解中的实际应用例子.题目链接在此.题目大意是给定一个正整数N,要求将其分解成多个质因数相乘的形式.需要注意的是质因数分解的常用算法是试除法,例子中使用的也是试除法.并且每一个合数都能够写成几个质因数相乘的形式. 上述题目的一个可行代码如下

素数相关?(有关素数的题持续更新中)x

素数(大体举几个栗子): 素数相关知识: 素数概念: 最大公约数只有1和它本身的数叫做质数(素数) 素数小性质: 1.大于一的整数必有素因数. 2.设p是素数,n是任意一个整数 能够推出p|n,(p,n)=1; 3.设p是素数,a,b为整数,若p|ab,则ab中至少有一个能被p整除 4.素数有无穷多个证明: (素数与整数之间的关系:1整除2互素) 假定正整数中只有有限个素数 设p1,p2……pk为从小到大排列起来的数 且N=p1*p2*……pk 设M=N+1 如果M为素数,那么M要大于p1,p2

代码实现:判断101-200之间有多少个素数(质数),并输出所有素数。 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。

package com.heima.Coding; /* 判断101-200之间有多少个素数(质数),并输出所有素数. 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数.*/ public class Test { public static void main(String[] args) { int count = 0; for (int i = 100; i < 200; i++) { for (int j = 2; j <=

开发时间缩短90% Amaze UI助H5梦工场响应式网站快速上线

近日,HTML5梦工场使用云适配开源HTML5跨屏前端框架AmazeUI对自身网站进行了重新开发.开发完成的新网站,用户无论通过任何终端访问,网站内容都能保持实时同步,并能以最佳的展现方式呈现出来.   H5梦工场官网在PC和移动端的展示   HTML5梦工场是中国最有影响力的技术社区团队,由国内最早一批HTML5探索者和狂热拥护者发起,为广大开发者搭建一个开放.自由的互动交流平台,旨在推动HTML5在中国的应用与普及.目前,旗下的品牌活动已覆盖了近10万互联网和移动互联网行业的从业者和爱好者.