主题:C语言习题
751536189
[专家分:0] 发布于 2010-06-15 17:34:00
下面有一题
输入一个正整数,输出它的所有质数因子(如180的质数因子为2,2,3,3,3,5)。
这道题该怎么解啊??? 求助 那位朋友能说一下这个题的解题思路,希望是详细点的!!!
回复列表 (共9个回复)
沙发
caomang [专家分:150] 发布于 2010-06-15 17:57:00
m%n(2.3.4.5……m/2),然后输出
这个思路你可以考虑考虑啊
板凳
雪光风剑 [专家分:27190] 发布于 2010-06-15 21:22:00
伪代码
输入m
n<-2
穷举直至n>m
如果n整除m
输出n
否则n++
3 楼
huyujin [专家分:0] 发布于 2010-06-15 23:15:00
应该可以先将它的因数求出,放进数组,再利用找素数的方法应该就可以吧
4 楼
bruceteen [专家分:42660] 发布于 2010-06-16 00:02:00
写个最简单的
#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 楼
雪光风剑 [专家分:27190] 发布于 2010-06-16 06:46:00
BT同学把我的算法给实现了……删不了了,就这样吧:P希望lz同学有所收获
6 楼
alweeq86 [专家分:1170] 发布于 2010-06-17 21:58:00
4楼
if( n%a == 0 )
这个地方前面要再加个循环 因为有可能有同样的质因子 比如36的质因子有2个2 3个3之类的
7 楼
雪光风剑 [专家分:27190] 发布于 2010-06-17 22:10:00
[quote]4楼
if( n%a == 0 )
这个地方前面要再加个循环 因为有可能有同样的质因子 比如36的质因子有2个2 3个3之类的[/quote]
你木有认真看程序哦,如果某质因子出现了,那么会接着尝试这个质因子直到不再包含改因子
8 楼
alweeq86 [专家分:1170] 发布于 2010-06-18 13:50:00
不好意思 我没太注意看
9 楼
alweeq86 [专家分:1170] 发布于 2010-06-19 17:56:00
仔细想了想 4L的算了挺好的
我来回复