欧拉项目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 所有数的最小公倍数。

参考文章:http://files.cnblogs.com/skyivben/005_overview.pdf。

最简单的就是从1,20两两求最小公倍数。

这里有一个公式:

lcm(1...n) == lcm([n/2]+1,n),[]是向上取整

我自己举了好多例子,在[n/2]+1...n之间的数,总能用(1...[n/2])里的数相乘得到,所以lcm(1...n)==lcm([n/2]+1,n)

说是:对于 1 至  之间的每个数
a,在  至
n 之间刚好可以找到一个数 b,使得 2ka
= b 。

我的python代码如下:

#lcm(1...n) == lcm([n/2]+1...n)
def gcd(a,b):
    #a>b
    while b:
        r = a % b
        a = b
        b = r
    return a
def lcm(a,b):
    return a/gcd(a,b)*b
N = 20
x = N/2+1
for y in range(N/2+2,N+1):
    x = lcm(x,y)
print x

欧拉项目005:最小公倍数,布布扣,bubuko.com

时间: 2024-10-12 16:21:20

欧拉项目005:最小公倍数的相关文章

欧拉项目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

欧拉项目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

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

#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

欧拉项目代码(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(

欧拉项目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*

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

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这个特殊的质数,除此之外的偶

51nod 1363 最小公倍数的和 欧拉函数+二进制枚举

1363 最小公倍数之和 题目来源: SPOJ 基准时间限制:1.5 秒 空间限制:131072 KB 分值: 160 给出一个n,求1-n这n个数,同n的最小公倍数的和.例如:n = 6,1,2,3,4,5,6 同6的最小公倍数分别为6,6,6,12,30,6,加在一起 = 66. 由于结果很大,输出Mod 1000000007的结果. Input 第1行:一个数T,表示后面用作输入测试的数的数量.(1 <= T <= 50000) 第2 - T + 1行:T个数A[i](A[i] <