| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1405 人关注过本帖
标题:[求助]题目:将一个正整数分解质因数。
只看楼主 加入收藏
ljfljf2006
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2005-9-11
收藏
 问题点数:0 回复次数:2 
[求助]题目:将一个正整数分解质因数。
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5

我开始用FOR循环来做,但不知道是不是因为在循环过程中需要不断改变限制条件,无法得到完全正确的结果.
所以我就改用WHILE循环来做
#include "math.h"
int sushu(int a)/*判断是否为素数的一个函数*/
{ int b;
if (a=1) return 0 ;
for (b=2;b<=sqrt(a);b++)
{if (a%b==0) return 0;}
return 1;
}
main()
{ int b,c=2,d=0;
scanf("%d",&b);/*输入待处理的数字*/
printf("%d=",b);
while(b!=1)/*循环过程中需不断改变b的值,当被除尽时结束*/
{if (b%c==0&&sushu(c))/*判断是否为质因数*/
{printf ("%d",c);b=b/c;if (b!=1) {printf("*");c=c-1;}}
c=c+1;
}
}
我仔细进行了检查 没发现什么错误 但运行后 输入数据 按回车 显示 divide error
请好心人指点 不胜感激



搜索更多相关主题的帖子: 质因数 整数分解 素数 int 
2007-07-15 11:09
ljfljf2006
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2005-9-11
收藏
得分:0 
本人刚才突然醒悟 发现自己犯了一个非常严重的错误 其实根本不需要什么判断素数的函数
只需要从2开始一直增加进行循环就可以了 这样也不会出现合数

不过依然请教一下 上面的例子的错误还出现在哪里

I will come back!
2007-07-15 11:26
ljfljf2006
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2005-9-11
收藏
得分:0 
附上标准答案
main()
{
int n,i;
printf("\nplease input a number:\n");
scanf("%d",&n);
printf("%d=",n);
for(i=2;i<=n;i++)
 {
  while(n!=i)
  {
   if(n%i==0)
   { printf("%d*",i);
    n=n/i;
   }
   else
    break;
  }
}
printf("%d",n);
}

I will come back!
2007-07-15 11:44
快速回复:[求助]题目:将一个正整数分解质因数。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016050 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved