gpt4 book ai didi

c - 查找给定整数的所有精确除数的算法

转载 作者:太空狗 更新时间:2023-10-29 16:28:14 24 4
gpt4 key购买 nike

我想找到一个数的所有精确除数。目前我有这个:

{
int n;
int i=2;
scanf("%d",&n);
while(i<=n/2)
{
if(n%i==0)
printf("%d,",i);
i++;
}
getch();
}

有什么办法可以改善吗?

最佳答案

首先,您的代码应具有 i <= n/2 的条件, 否则它可能会遗漏其中一个因素,例如如果 n=12 则不会打印 6。

将循环运行到数字的平方根(即 i <= sqrt(n) )并打印 in/i (两者都是 n 的倍数)。

{
int n;
int i=2;
scanf("%d",&n);
while(i <= sqrt(n))
{
if(n%i==0) {
printf("%d,",i);
if (i != (n / i)) {
printf("%d,",n/i);
}
}

i++;
}
getch();
}

注意:

  • 对于一个完美的平方,这样平方根就不会被打印两次,额外的检查是在循环结束时为 i*i == n 完成的。正如@chepner 所建议的。
  • 如果您希望所有因子按升序将值存储在数组中,则在循环结束时对所有数字进行排序并显示。

关于c - 查找给定整数的所有精确除数的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11699324/

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