| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5150 人关注过本帖
标题:输入正整数n(n>1),编程找出n以内的所有完数并输出其因子。
只看楼主 加入收藏
opq2020
Rank: 1
等 级:新手上路
帖 子:15
专家分:3
注 册:2020-4-3
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
输入正整数n(n>1),编程找出n以内的所有完数并输出其因子。


输入格式:1000

输出格式:6(1,2,3);28(1,2,4,7,14);496(1,2,4,8,16,31,62,124,248);(注意:式子中所有符号均为英文状态下的符号)
*/
搜索更多相关主题的帖子: 编程 完数 输出 输入 正整数 
2020-04-13 16:13
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
收藏
得分:0 
遇到什么问题说清楚
论坛不支持抄代码

https://zh.
2020-04-13 16:17
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
收藏
得分:10 
程序代码:
#include<stdio.h>
main()
{
int n,i,j,k=0,sum=0,a[100];
printf("请输入一个数字\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
  {
   sum=0;
   k=0;
   for(j=1;j<i;j++)
    {
      if(i%j==0)
      {
        a[k++]=j;
        sum+=j;
      }
    }
    if(sum==i)
     {
      printf("%d",j);
      printf("(");
      while(k--)
      printf("%d, ",a[k]);
      printf(")");
      printf("\n");
    }
  }
  printf("\n");
}
2020-04-13 16:34
D2284581470
Rank: 3Rank: 3
来 自:沈阳
等 级:论坛游侠
威 望:2
帖 子:169
专家分:147
注 册:2019-12-8
收藏
得分:10 
你好!
这道题主要在于格式的输出,判断的话可以想得简单一点,总体思路:从2 开始一直到输入的界限(比如1000),然后对每一个数求它的因子,总求它的和,进行判断,如果这个数和总和相等的话,在进行下面的输出代码。期间在前面用了计数,这是为了更好的在格式输出时便于控制。
下面是代码:(有注释)
程序代码:
#include<stdio.h>
int main()
{
    int i, j;
    int sum;//求所有因子的和
    int n;//输入一个数的范围 比如:1000
    int count,count1;//count 用于控制某个数的因子的个数 count1用于计数
    scanf("%d",&n);
    for (i = 2; i <= n; i++)//首先排除输出没有1 可以直接略去

    {
        count1 = 0;
        count = 0;
        sum = 0;//这三个赋值为0 的是每次循环数时重新赋值
        for (j = 1; j < i; j++)
        {
            if (i % j == 0)
            {
                sum += j;//计算因子的和
                count++;//计算因子的个数
            }
        }
        if (sum == i)//当因子的和等于它对应的数时 才开始下面
        {
            printf("%d(",sum);
            for (j = 1; j < sum; j++)
            {
                if (sum % j == 0)
                {
                    printf("%d",j);
                    count1++;
                    if (count1 == count)//为什么要计个数呢?主要是对最后一个格式的输出 不然多了 ,

                    {
                        printf(");");
                        break;
                    }
                    printf(",");
                }
            }
        }
    }
    return 0;
}
谢谢!!!
2020-04-13 21:21
快速回复:输入正整数n(n>1),编程找出n以内的所有完数并输出其因子。
数据加载中...
 
   



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

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