gpt4 book ai didi

c++ - 检查一个数是否能被许多其他数整除

转载 作者:太空宇宙 更新时间:2023-11-04 14:53:07 27 4
gpt4 key购买 nike

我有一个编程问题要我检查 30,000 个六角形数字(由公式给出:H(n) = n(2n-1) ),其中有多少可以被数字 1 到 12 整除。

我有如下代码:

#include <iostream>
#include <cstring>

using namespace std;

int main()
{
int hex, count = 0;

for (int n = 1; n <= 30000; n++)
{
hex = n * ((2 * n) - 1);

if (hex % 1 == 0 && hex % 2 == 0 && hex % 3 == 0 && hex % 4 == 0 && hex % 5 == 0 && hex % 6 == 0 && hex % 7 == 0 && hex % 8 == 0 && hex % 9 == 0 && hex % 10 == 0 && hex % 11 == 0 && hex % 12 == 0)
{
count++;
}
}

cout << count << endl;
}

现在我知道我现在在 if 语句中进行的检查效率非常低,所以我想知道是否有更简单的方法来检查数字?我尝试使用 for 循环但无法让它工作(因为它一次只检查 1 个数字)。有什么想法吗?

最佳答案

如果a[i] | x对于 1 <= i <= n , 然后 lcm(a[1], ..., a[n]) | x

对于这种情况,只需要检查是否lcm(1,2,...,12) | h ,即 h % 27720 == 0


  1. https://en.wikipedia.org/wiki/Least_common_multiple

关于c++ - 检查一个数是否能被许多其他数整除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41114730/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com