求一个数的质因子的算法?

zhgc2003 2003-05-10 10:28:43
求一个数的质因子的算法(不是因子)
比如说
98=49*2=7*7*2
但是只能说49是98的因子
98质因子是7和2
质因子一定是质数
只要给出个算法
求出一个数的质因子就行
方法不限。请多多指教!
...全文
1659 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
taylorwc 2003-05-12
  • 打赏
  • 举报
回复
先找出这个数的因数,再用一个函数判断其是否为质数
lbaby 2003-05-12
  • 打赏
  • 举报
回复 1
呵呵

RSA的基石

图灵奖

superyellow 2003-05-12
  • 打赏
  • 举报
回复
先求出2~这个数的所有质数
然后循环一遍能被这个数整除的就是它的质因子了
------------------------------------------------------
没必要求出2~n的所有质数,到sqrt(n) + 1就可以了。质因子不可能大于sqrt(n) + 1的。
NowCan 2003-05-12
  • 打赏
  • 举报
回复
10^150算大吗?
jony413 2003-05-12
  • 打赏
  • 举报
回复
不会吧?拿n要多打啊?顶多也只是算n次!
不象那些货郎担问题之类的,算死人了,输入10城市就让你算到好累
我具体还没去等它!
Riemann 2003-05-11
  • 打赏
  • 举报
回复
质因子分解一直是一个很困难的问题,如果n不是很大,用楼上的方法也就行了,当n很大时,到目前为止,还没有找到一个高效的算法。
jony413 2003-05-10
  • 打赏
  • 举报
回复
# include <stdio.h>
main()
{
int i,n;int j,k;
system("cls");
printf("please input the number:");
scanf("%d",&n);
for(i=2;i<n;i++)
{
while(n%i==0)
{
n=n/i;
printf("%d*",i);
}
}
if(n!=1)
printf("%d",n);
else
printf("\b ");
}
fangyi1120 2003-05-10
  • 打赏
  • 举报
回复
同意
lws08 2003-05-10
  • 打赏
  • 举报
回复
先求出2~这个数的所有质数
然后循环一遍能被这个数整除的就是它的质因子了

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧