欧拉项目010:2000000以内的素数和


Summation of primes

Problem 10

The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17.

Find the sum of all the primes below two million.

还是使用Sieve of Eratosthenes 算法

我的python代码例如以下:

#coding:utf-8
#从2到sqrt(n)
# 不用全部的都用遍历。从i**2,步长为i,i*2,i*3肯定都不是质素。
# 从i*i開始,仅仅要是i>2,是由于i*2,i*3已经被測试过,不用在计算了
from math import sqrt
def primesieve(n):
    l=range(n)
    l[1]=0
    for i in range(2,int(sqrt(n))):
        if l[i]:
            l[i**2::i]=[0]*((n-1-i**2)//i+1)
    return [x for x in l if x]
print sum(primesieve(2000000))

时间: 2024-10-12 16:24:37

欧拉项目010:2000000以内的素数和的相关文章

欧拉项目007:第10001个素数

10001st prime Problem 7 By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13. What is the 10 001st prime number? 使用埃拉托斯特尼筛法,不懂得自行Wiki 我的python代码: # -*- coding:utf-8 -*- #使用埃拉托斯尼特晒法 #从2开始 import math def

欧拉项目005:最小公倍数

Smallest multiple Problem 5 2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder. What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20? 就是找出1....20 所有数的最

欧拉项目004:寻找最大的回文数

Problem 4: Largest palindrome product A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 × 99. Find the largest palindrome made from the product of two 3-digit numbers. 寻找有两

006:欧拉项目平方和与和的平方的差

Sum square difference Problem 6 The sum of the squares of the first ten natural numbers is, 12 + 22 + ... + 102 = 385 The square of the sum of the first ten natural numbers is, (1 + 2 + ... + 10)2 = 552 = 3025 Hence the difference between the sum of

欧拉筛法(线性筛)素数

#include<bits/stdc++.h> using namespace std; #define maxn 40 int prime[maxn]; int visit[maxn]; void Prime(){//埃氏筛法 memset(visit,0,sizeof(visit)); //初始化都是素数 visit[0] = visit[1] = 1; //0 和 1不是素数 for (int i = 2; i <= maxn; i++) { if (!visit[i]) { //

欧拉项目第十题;用筛法做,

#include<stdio.h>#define N 2000000int a[N]; int main(){ __int64 sum=0; __int64 i,j; for(i=2;i<N;i++) a[i]=1; for(i=2;i<N;i++) if(a[i]) for(j=i;i*j<N;j++) a[i*j]=0; for(i=2;i<N;i++) if(a[i]) sum=sum+i; printf("%I64d",sum); retur

欧拉项目第三题之最大质数因子

13195的质数因子有5,7,13和29. 600851475143的最大质数因子是多少? 这里可以肯定的是:1.数字很大,绝对不能暴力.2.如果这是一到OJ题,那么我们的目的就是尽量缩小这个数,减少计算量. 我们都知道,任何一个合数都是可以由他的所有质因素相乘得到的,比如15=3*3*3*3*3,12=2*2*3,60=2*2*3*5.(这些数都是我随便想的),好的,我们先看一个比较小的数60,现在我们要找它的最大质因子,我们可以从最小的奇数开始枚举(当然要先枚举2这个特殊的质数,除此之外的偶

欧拉项目代码(1--7)

第七题 求第10001个质数(用这个代码,我的笔记本大概算了40s): count=1 num=3 def findPrime(s): i=2 a=s while i<s/2: if s%i == 0: s=s/i break else: i=i+1 if s==a: return True else: return False while count <10001: if findPrime(num): count =count + 1 num = num +2 else: num = nu

欧拉项目python代码

第12题: 拥有超过500个因数的第一个三角数(1+2+3+4+......) def findivisionnum(num): count = 0 n=1 import math while count<num: count = 0 for i in range(1,int(math.sqrt(triangle(n)))+1): if not triangle(n)%i: count +=2 if int(math.sqrt(triangle(n)))==math.sqrt(triangle(