当前位置: 首页 > 知识库问答 >
问题:

如何找到可以被所有数字1:n除且没有余数的最小数?

冯阳成
2023-03-14

我一直在努力解决Euler项目中的第5个问题,这就像

2520是可以被1到10中的每一个数字除以而没有任何余数的最小数字。

可以被1到20的所有数字整除的最小正数是多少?

我决定更进一步,我决定找到一个最小的正数,它可以被从1到limit的所有数字平均整除,limit是用户定义的。

当我执行程序时,问题开始出现,它立即打印出0。我试图追踪我的代码,但没有成功。

#include <iostream>
using std::cout;
using std::cin;

bool isRemainderFree(int num, int limit){
    bool bIsRemainderFree = true;
    if(num < limit){
        bIsRemainderFree = false;
    }else{
        for(int i=1; i <= limit; i++){
        if(num % i != 0){
            bIsRemainderFree = false;
            break;
        }
      }
    }
    return bIsRemainderFree;
}

int smallestMultiple(int limit){
    int smallestNum = 10;
    for(int i=1; i <= limit; i++){
        bool bFree = isRemainderFree(i, 10);
        if(bFree){
            cout << i << " is divisible by all numbers from 1 to " << limit << ".\n";
            smallestNum = i;
            return smallestNum;
            break;
        }
    }

}

int main(){
    int limit;
    cin >> limit;
    int smallestNum = smallestMultiple(limit);
    cout << smallestNum;
    return 0;
}

共有2个答案

华永逸
2023-03-14

PYTHON代码

import math
   
# Returns the lcm of first n numbers
def lcm(n):
    ans = 1
    for i in range(1, n + 1):
        ans = int((ans * i)/math.gcd(ans, i))        
    return ans
   
# main
n = 20
print (lcm(n))
傅旺
2023-03-14

答案应该是所有数字的LCM,可以通过以下方式轻松完成

int gcd(int a, int b){
    if(b==0)
        return a;
    return gcd(b, a%b);
}
int main() {
    int limit = 10, lcm = 1;
    for(int i=1; i<=limit; i++){
        lcm = (lcm * i)/gcd(lcm,i);
    }
    printf("%d\n", lcm); // prints 2520
    return 0;
}
 类似资料:
  • 求可被1到N的所有数整除的最小数,不留余数。由于数字可能非常大,我们取模100000007的答案。 我认为可以被从1到N的所有数字整除的最小数字是LCM(1... N)。 例如:对于N=5,最小值为60。 因为60是能被所有数字形式(1-5)整除的最小数。 但由于一些奇怪的原因,它给了我错误的答案大N(1000),等等。什么可以导致这里可能的错误,我在这里的登录正确吗? 这是我试图实现的。

  • 我试图找到一个最小的正数,它可以被1到20的所有数字整除。我们得到,2520是可以被1到10的每个数字除的最小数,没有任何余数。My find()查找从2520开始的数字,该数字可以被1-20之间的所有数字整除,但由于某种原因返回2520。我找不到我的find()有什么问题?

  • 问题5:2520是可以被1到10的每个数字除的最小数,没有任何余数。可以被1到20的所有数字整除的最小正数是多少? 我已经解决了Euler项目的问题5 以下是Java代码: 如何优化这个?

  • 问题内容: 我正在开发的游戏目前需要让人们以自己的名字参加高分榜。我对如何处理按键有些陌生,但是我只在寻找特定按键。是否有一种简单的方法可以使按下任何键的字母而无需执行以下操作: 尽管这行得通,但我觉得有一种更有效的解决方法。我只是无法弄清楚或找到任何指导。 问题答案: 基本上有两种方法: 选项1: 使用。 就这么简单 使用的好处是,仅当0的值介于255和255之间(包括0和255)时,该方法才有

  • 我有一个任务需要完成:

  • 特殊数字是这样的,即在素数指数上有素数位(2,3,5,7),在非素数指数上有非素数值。(例如,15743-素数索引(2,3,5)具有素数数字(5,7,3))。有多少个n位的特殊数字也可以被m整除。 例如,对于n=2和m=2,答案将是[12,42,62,82,92],所以是5。 我写了一个回溯算法,找到特殊数的所有这些排列,然后检查这些特殊数中的每一个是否可以被m整除,并返回计数。这对n和m的小值有