| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3715 人关注过本帖
标题:一道求因子之和的问题
只看楼主 加入收藏
seep666
Rank: 2
等 级:论坛游民
帖 子:91
专家分:14
注 册:2010-3-18
结帖率:62.07%
收藏
已结贴  问题点数:20 回复次数:10 
一道求因子之和的问题
输入一个非质数n,除1和它本身之外,所有的因子之和,
下面是我做的,当我输入18时,运行的结果怎么也是9
#include"stdio.h"
int fun(int n)
{
   int sum=0,i=2;
   while(i<n/2)
   {
       while(n%i==0)
       {
       sum=sum+i;
       n=n/i;}
           i++;
   }
   sum=sum+n;
    return sum;     
}
   void main()
   {
   int n=18;
   fun(n);
   printf("%d",fun(n));
   }
搜索更多相关主题的帖子: 之和 
2010-08-21 13:38
御坂美琴
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:魔術の禁書目錄
等 级:小飞侠
威 望:9
帖 子:952
专家分:2929
注 册:2010-8-18
收藏
得分:6 
1+2+3+3当然等于9,御坂御坂解释着

永远为正义而奋斗,锄强扶弱的Level 5 超能力者
とある魔術の禁書目錄インデックス__御み坂さか美み琴こと
http://bbs.bccn.net/space.php?action=threads&uid=483997
2010-08-21 13:46
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
收藏
得分:6 

经分析 各变量运行时变化如下:
sum=2
n=9
sum=5
n=3
sum=8
n=1
8+1=9
是9啊

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2010-08-21 13:47
御坂美琴
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:魔術の禁書目錄
等 级:小飞侠
威 望:9
帖 子:952
专家分:2929
注 册:2010-8-18
收藏
得分:0 
因为你做的是把18分解成2*2*3再加起这些因子后,再加1或者加最后一个因子,
如果你是要所有约数的和,那你不应该n=n/i
御坂御坂再解释道

永远为正义而奋斗,锄强扶弱的Level 5 超能力者
とある魔術の禁書目錄インデックス__御み坂さか美み琴こと
http://bbs.bccn.net/space.php?action=threads&uid=483997
2010-08-21 13:48
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
收藏
得分:0 
御姐所言甚是

御姐是程序员吗?

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2010-08-21 13:50
御坂美琴
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:魔術の禁書目錄
等 级:小飞侠
威 望:9
帖 子:952
专家分:2929
注 册:2010-8-18
收藏
得分:0 
int fun(int n)
{
   int sum=1,i=2;
   while(i<=n/2)
   {
       if(n%i==0)
       {
           sum=sum+i;
       }
       i++;
   }
   return sum;     
}
这样改吧,御坂提议道

永远为正义而奋斗,锄强扶弱的Level 5 超能力者
とある魔術の禁書目錄インデックス__御み坂さか美み琴こと
http://bbs.bccn.net/space.php?action=threads&uid=483997
2010-08-21 13:51
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
收藏
得分:6 
以下是引用御坂美琴在2010-8-21 13:51:53的发言:

int fun(int n)
{
   int sum=1,i=2;  // int sum=0,i=2;  
   while(i<=n/2)
   {
       if(n%i==0)
       {
           sum=sum+i;
       }
       i++;
   }
   return sum;     
}
这样改吧,御坂提议道
一道求因子之和的问题
输入一个非质数n,除1和它本身之外,所有的因子之和
所以 函数中不应该把1也加到一起吧?所以sum初始应该改成0吧?

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-08-21 13:57
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
收藏
得分:0 
晚上无聊 看下我写的算法:
int n=18;
int i;
int k=0;
int sum=0;
for(i=2;i<n;i++)
{
if (n%i==0) {k=n/i;
             sum=sum+k+i;}
}
printf("%d",sum/2);

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2010-08-22 03:58
御坂美琴
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:魔術の禁書目錄
等 级:小飞侠
威 望:9
帖 子:952
专家分:2929
注 册:2010-8-18
收藏
得分:0 
以下是引用vandychan在2010-8-22 03:58:46的发言:

晚上无聊 看下我写的算法:
int n=18;
int i;
int k=0;
int sum=0;
for(i=2;i<n;i++)
{
if (n%i==0) {k=n/i;
             sum=sum+k+i;}
}
printf("%d",sum/2);
试试n=9,御坂提示

永远为正义而奋斗,锄强扶弱的Level 5 超能力者
とある魔術の禁書目錄インデックス__御み坂さか美み琴こと
http://bbs.bccn.net/space.php?action=threads&uid=483997
2010-08-22 08:32
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
收藏
得分:0 
改成这样:
int n=18;
int i;
int k=0;
int sum=0;
for(i=2;i<n;i++)
{
if (n%i==0) {k=n/i;
             sum=sum+k+i;
             if(k==i) sum=sum+k+i;}
}
printf("%d",sum/2);

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2010-08-22 10:28
快速回复:一道求因子之和的问题
数据加载中...
 
   



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

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