projecteuler---->problem=5----Smallest multiple n个数求最小公倍数

title:

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?

翻译:

2520是能被1到10的自然数整除的最小正整数。

那么,能被1到20的自然数整除的最小正整数是……?

解答:

a=[20,19,18,17,16,15,14,13,12,11]
tmp=0
def gcd(a,b):
	if a < b:
		tmp=a
		a=b
		b=tmp
	if b==0:
		return a
	else :
		return gcd(b,a%b)
def lcm(a,b):
	return a*b/gcd(a,b);

def nlcm(n):
	if n==1:
		return a[0]
	else :
		return lcm(a[n-1],nlcm(n-1))

print nlcm(10)

分析:1-20的最小公倍数,那么推导可得如果可以被11-20整除,那么一定可以被1-10整除,那么就可以将数的范围缩小一半。

接下来求n个数的最小公倍数与求2个数的最小公倍数是一样的,实现方法递归向下。

projecteuler---->problem=5----Smallest multiple n个数求最小公倍数

时间: 2024-12-09 06:50:38

projecteuler---->problem=5----Smallest multiple n个数求最小公倍数的相关文章

HDU1019 Least Common Multiple(多个数的最小公倍数)

The least common multiple (LCM) of a set of positive integers is the smallest positive integer which is divisible by all the numbers in the set. For example, the LCM of 5, 7 and 15 is 105. InputInput will consist of multiple problem instances. The fi

Smallest multiple

problem 5:Smallest multiple 题意:求最小的正数,使得其可以被1-20整除 代码如下: 1 #ifndef PRO5_H_INCLUDED 2 #define PRO5_H_INCLUDED 3 4 #include "prime.h" 5 6 namespace pro5{ 7 long long solve(){ 8 long long ans=1; 9 for(int i=2;i<=20;++i) 10 ans=lcm(ans,i); 11 ret

PE5 Smallest multiple

题目 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? https://projecteuler.net/problem=5 分析 可以将题

Project-Euler problem 1-50

最近闲的做了下Project Euler 上的题目,前面50题都比较简单,简单总结下.代码一般是Python和C/C++的 用Python 做这些题目简直是酸爽啊 一下代码可能不一定是我的,因为不知道论坛里面的回复不是永久的,所以我的代码有的丢了,可能找个和我的意思相近的代码.题目翻译是从 欧拉计划 | Project Euler 中文翻译站上面Copy 的表告我. Problem 1  Multiples of 3 and 5 10以下的自然数中,属于3和5的倍数的有3,5,6和9,它们之和是

求多个数的最小公倍数的问题

Problem Description 求n个数的最小公倍数. Input 输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数. Output 为每组测试数据输出它们的最小公倍数,每个测试实例的输出占一行.你可以假设最后的输出是一个32位的整数. Sample Input 2 4 6 3 2 5 7 Sample Output 12 70 #include <stdio.h> #include <stdlib.h> typedef long unsigned

求n个数的最小公倍数(数值范围的控制)

Description 求n个数的最小公倍数. INPUT 输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数. OUTPUT 为每组测试数据输出它们的最小公倍数,每个测试实例的输出占一行.你可以假设最后的输出是一个32位的整数. SAMPLE INPUT 2 4 6 3 2 5 7 SAMPLE OUTPUT 12 70 解题心得: 本来是很简单的题的,可是由于没有适当的控制算法,导致结果溢出. AC代码: 1 #include<stdio.h> 2 long int

nyist 31 5个数求最值

5个数求最值时间限制:1000 ms | 内存限制:65535 KB 难度:1描述 设计一个从5个整数中取最小数和最大数的程序输入输入只有一组测试数据,为五个不大于1万的正整数输出输出两个数,第一个为这五个数中的最小值,第二个为这五个数中的最大值,两个数字以空格格开.样例输入1 2 3 4 5样例输出1 5 #include <iostream>using namespace std;int main ( ){ int i,max,min,a[5] ; for(i=0 ;i<5 ;i++

求N个数的最小公倍数

[求N个数的最小公倍数] 1.两两依次求解+提取公因数法. 2.质因数分解法. 例题 2.提取部分公因数法. 3.倍数Trick. 4.幂次Trick.

定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数;然后按顺序每五个数求出一个平均值,放在另一个数组中并输出

<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> //定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数:然后按顺序每五个数求出一个平均值,放在另一个数组中并输出. var arr = []; var NewArr = []