回 帖 发 新 帖 刷新版面

主题:C语言习题

下面有一题  
         输入一个正整数,输出它的所有质数因子(如180的质数因子为2,2,3,3,3,5)。
  这道题该怎么解啊??? 求助   那位朋友能说一下这个题的解题思路,希望是详细点的!!!

回复列表 (共9个回复)

沙发

m%n(2.3.4.5……m/2),然后输出

这个思路你可以考虑考虑啊

板凳

伪代码

输入m
n<-2
穷举直至n>m
  如果n整除m
    输出n
  否则n++

3 楼

应该可以先将它的因数求出,放进数组,再利用找素数的方法应该就可以吧

4 楼

写个最简单的

#include <iostream>
using namespace std;

int main()
{
    size_t n = 180;
    for( size_t a=2; a<=n; )
    {
        if( n%a == 0 )
        {
            n /= a;
            cout << a << ' ';
        }
        else
            ++a;
    }

    return 0;
}

5 楼

BT同学把我的算法给实现了……删不了了,就这样吧:P希望lz同学有所收获

6 楼

4楼
if( n%a == 0 )
这个地方前面要再加个循环 因为有可能有同样的质因子 比如36的质因子有2个2 3个3之类的

7 楼

[quote]4楼
if( n%a == 0 )
这个地方前面要再加个循环 因为有可能有同样的质因子 比如36的质因子有2个2 3个3之类的[/quote]
你木有认真看程序哦,如果某质因子出现了,那么会接着尝试这个质因子直到不再包含改因子

8 楼

不好意思 我没太注意看

9 楼

仔细想了想 4L的算了挺好的

我来回复

您尚未登录,请登录后再回复。点此登录或注册