鱼C论坛

 找回密码
 立即注册
查看: 1807|回复: 1

【谭浩强课后习题】想用数组解决这类问题

[复制链接]
发表于 2021-2-21 15:41:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
原题是:
9.一个数如果恰好等于它的因子之和,这这个数就称为“完数”。例如:
6=1+2+3,因此6是“完数”。编程序,找出1000之内的所有完数,
并按下面格式输出其因子:6 its factors are 1 2 3
我写的程序:
#include<stdio.h>
int main(void)
{
        int a=1,b,c=1000,d,yin[];
        if(a<=c)
        {
                a++;
        for(b=1;b<a-1;b++)
        {
                d=a%b;
                if(d==0)
                {
                        yin[]=b;
                }
        }
        }
        printf("%d its factors are %d\n",a,yin[]);
        return 0;

}
请问各位神仙,我该如何改进才可以实现这功能呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-2-21 17:34:43 | 显示全部楼层
#include <stdio.h>

int main()
{
        int num = 2;
        int n = 0;
        int i = 0;
        int j = 0;
        int sum = 0;
        int arr[30] = {0};
                
        for(i=1 ; i<1000 ; i++)
        {
                n = i;
                num = 1;
                sum = 0;
                j = 0;

                while(n/2 >= num)
                {
                        if(n%num == 0)
                        {
                                sum += num;
                                arr[j++] = num;
                        }
                        num ++;
                }
                
                if(n == sum)
                {
                        printf("%d its factors are ",n);
                        for(num = 0; num < j ; num ++)
                        {
                                printf("%d ",arr[num]);
                        }
                        printf("\n");
                }
        }

        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-22 13:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表