gpt4 book ai didi

C 代码来查明数字是否为 "strong"(来 self 的语言的直译)

转载 作者:行者123 更新时间:2023-11-30 19:13:06 25 4
gpt4 key购买 nike

对,我们目前正在学习 C 中的循环。作业如下(直译):

"Strong numbers are those integers which can be written in a form of a^2 b^3, where a and b are any integer. Examples of strong numbers:

1 = 1^2 1^3
4 = 2^2 1^3
8 = 1^2 2^3
32 = 2^2 2^3
675 = 5^2 3^3

Ask the user one integer, and print out whether the number is strong or not"

我完全迷失在这里了。有什么帮助吗?

最佳答案

从数学上来说,您想要检查每个质因数的指数是否可以写成 2*a + 3*b对于整数 ab 。如果是这样的话,这个数字就很强大了。否则就不是。

实际上比看起来简单得多。首先,请注意任何大于 1 的整数都可以写为 2*a + 3*b ,所以你只需要看看是否有任何质因数只出现一次。

在实现方面,您可以更简单地通过检查并删除从 2 开始的所有因素。

这是一个不会溢出的高效实现。如果n则返回1是强的,如果不是,则为 0:

int is_strong(int n)
{
int f, c;

for (f = 2; f <= n/f; f++) {
c = 0;
while (n % f == 0) {
n /= f;
c++;
}
if (c == 1) {
return 0;
}
}

return n == 1;
}

请注意,我使用了 f <= n/f而不是f*f <= n以避免溢出的风险(尽管这种情况不太可能发生)。

另请注意,这仅适用于 >= 1 的整数。如果您愿意,可以添加针对 0 的特殊检查。

关于C 代码来查明数字是否为 "strong"(来 self 的语言的直译),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35932690/

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