C语言急急急急急急!!!

#include<stdio.h>intmain(){intn;intf[100];ints,x,i,count;scanf("%d",&n);for(x=1;x<=n;... #include <stdio.h>
int main()
{
int n;
int f[100];
int s, x, i,count;
scanf("%d",&n);
for(x=1;x<=n; x++)
{
count =0;
s = 0;
for( i=1; i<x; i++)
{
if(x % i == 0)
{
s+= i;
f[count]= i;
count++;

}
}
if(s == x)
{
printf("%dits factors are ",x);
for(i=0;i<count;i++)
printf("%d", f[i]);
printf("\n");
}
}
return 0;

}
请大神给我解释解释这个函数是干什么的另外在具体解释解释里面的for循环, 越详细越好,谢谢了!
展开
 我来答
慎重还可靠灬宝贝f
推荐于2016-06-30 · TA获得超过12.9万个赞
知道大有可为答主
回答量:1.9万
采纳率:52%
帮助的人:2615万
展开全部




  这个函数功能就是寻找n以内的所有完美数(完全数)。

  比如6

  因数:1 、2、 3

  且6=1+2+3.


  完全数

  如果一个数恰好等于它的因子之和,则称该数为“完全数” 。各个小于它的约数(真约数,列出某数的约数,去掉该数本身,剩下的就是它的真约数)的和等于它本身的自然数叫做完全数(Perfect number),又称完美数或完备数。

  例如:第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6。第二个完全数是28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。第三个完全数是496,有约数1、2、4、8、16、31、62、124、248、496,除去其本身496外,其余9个数相加,1+2+4+8+16+31+62+124+248=496。后面的完全数还有8128、33550336等等。

更多追问追答
追问
6是完数,假如输入6开始进入第一个for循环x++ 变为2 我想知道到第二个for循环x是取2么还是1?
是1的话是先执行里面的for循环吧,我按先执行外面的 到里面x变为2感觉不对啊,究竟是先执行外面的还是里面的, 还是是先执行外面的x仍然取1?碰见嵌套的就晕,求解,谢了
追答
只能取到1
kaixingui2012
2015-09-01 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6420万
展开全部
#include <stdio.h>
int main()
{
    int n;
      int f[100];
      int s, x, i,count;
      scanf("%d",&n); //读一个数n
      for(x=1;x<=n; x++) //从1到n之间检查每一个数
      {
             count =0;
             s = 0;
                    for(  i=1; i<x; i++)  //取出x的所有因子到f[]数组中,并得到因子的和
                    {
                           if(x % i == 0)
                           {
                                  s+= i;
                                  f[count]= i;
                                  count++;
                          
                           }
                    }
                    if(s == x) //如果所有因数的和与原数x相同,则输出这个完数及其因数
                    {
                           printf("%dits factors are ",x);
                           for(i=0;i<count;i++)
                                  printf("%d", f[i]);
                           printf("\n");
                    }
      }
    return 0;
 
}
追问
6是完数,假如输入6开始进入第一个for循环x++ 变为2 我想知道到第二个for循环x是取2么还是1?
是1的话是先执行里面的for循环吧,我按先执行外面的 到里面x变为2感觉不对啊,究竟是先执行外面的还是里面的, 还是是先执行外面的x仍然取1?碰见嵌套的就晕,求解,谢了
追答
 for(  i=1; i<x; i++)  //这里从1开始检查因数 ,当x=6时,i取值1-6
                    {
                           if(x % i == 0) //6的因数有1,2 ,3
                           {
                                  s+= i;
                                  f[count]= i;
                                  count++;
                           
                           }
                    }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式