首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用C语言打印合成数的最大素因数

用C语言打印合成数的最大素因数
EN

Stack Overflow用户
提问于 2010-08-13 00:30:12
回答 5查看 3K关注 0票数 1

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

我附上了下面的代码,如果有人能帮我找出最大的素数no,我将不胜感激。并将其打印出来。

代码语言:javascript
运行
复制
// 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);
}
EN

回答 5

Stack Overflow用户

发布于 2010-08-13 00:39:50

在内部循环中,如果确实存在一个不是i因子的数字,则设置为b = i。如果不存在作为i因子的数字,则需要设置b = i

(我所说的“数字”,当然是指“2sqrt(i)之间的整数”)

票数 1
EN

Stack Overflow用户

发布于 2010-08-13 00:45:16

要找到素因式分解,通常会找到2和sqrt(N)之间的所有因子。您可以将组合除以其中的每一个,以获得其余的因子。然后递归找出每一个的质因数。

完成后,您将拥有一个包含所有主要因素的列表。获取列表中最大的项应该是相当简单的。

票数 1
EN

Stack Overflow用户

发布于 2010-08-13 01:18:43

因式分解是一个经典的数论问题。你可以在数论教科书中找到许多因式分解算法。其中一些可以在维基http://en.wikipedia.org/wiki/Integer_factorization上找到

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3469882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档