gpt4 book ai didi

c - 在 C 中打印合数的最大质因数

转载 作者:太空宇宙 更新时间:2023-11-04 01:15:04 25 4
gpt4 key购买 nike

我正在解决一个难题,我需要找到用户输入的合数的最大质因数。我想到了一些东西并尝试了一下,但它无法检测出合数因子中最大的素因子。

我在下面附加了我的代码,如果有人能帮我在这里检测最大的素数,我将不胜感激。在这些因素中并打印出来。

// Accept a composite number from user and print its largest prime factor.

#include<stdio.h>
void main()
{
int i,j,b=2,c;
printf("\nEnter a composite number: ");
scanf("%d", &c);
printf("Factors: ");

for(i=1; i<=c/2; i++)
{
if(c%i==0)
{
printf("%d ", i);
for(j=2; j<=i/2; j++) //since a numbr cand be divisible by a number greated than its half
{ if(i%j > 0)
b = i;
else if(i==3)
b = 3;
}
}
}
printf("%d\nLargest prime factor: %d\n", c, b);
}

最佳答案

诀窍是,找到 最小 质因数,然后除以合数 c求最大质因数。

诀窍是找到最小因子 F(从 2 开始),其中 C/F 是质数。那么,C/F就是C的最大质因数。

编辑:您似乎还想列出所有因素。问题是,在测试素数的内部循环中,您将最大素数设置为 i对于可以被任何东西整除的数字。换句话说,尝试这样的事情:

is_prime = true;

for (j = 2; j <= x / 2; j++) {
if (i % j == 0)
is_prime = false;
}

if (is_prime)
largest_prime = x;

请注意,您实际上可以在 x 除以 2 之前停止。您可以在 x 的平方根处停止。然而,sqrt()<math.h> 中发挥作用在你的情况下使用起来有点麻烦,因为它使用 float ,而不是整数。

关于c - 在 C 中打印合数的最大质因数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3469882/

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