专升本C语言100题-1.

题目:一个数如恰好等于它的因子之和,这个数就称为“完数”。编程序找出 1000 以内的所有完数,并输出其因子(6 是一个"完数",它的因子是 1,2,3)。

解释:完数: 是指一个正整数等于除了它本身以外所有正因子之和的数。
     换句话说,一个数如果恰好等于它的因子之和(除了它本身之外),则称该数为“完数”。
 

例如:
  数字6是一个完数,因为6的因子有1、2和3,它们的和是1 + 2 + 3 = 6,恰好等于6本身。
  另一个完数的例子是28,它的因子有1、2、4、7和14,它们的和是1 + 2 + 4 + 7 + 14 = 28,也恰好等于28本身。
  
  已知最小的几个完数是:6、28、496、8128、……

代码:

#include <stdio.h>
// 判断n是否为完数
int ws(int n) 
{
    int sum = 0;
	int i;
    for ( i = 1; i < n; i++) 
    {
        if (n % i == 0) 
        {
            sum += i;
        }
    }
    return sum == n;
}
 

// 找出n的所有因子
int yz(int n) 
{
	int i;
    printf("%d的因子有: ", n);
    for ( i = 1; i < n; i++) 
    {
        if (n % i == 0) 
        {
            printf("%d ", i);
        }
    }
    printf("\n");
}
 
void main() 
{
	int num;
    printf("1000以内的完数有:\n");
    for ( num = 1; num <= 1000; num++) 
    {
        if (ws(num)) 
        {
            yz(num);
        }
    }
    
}



/* 
return sum==n 用
if( sum == n)
		return 1;
	else
		return 0;		
替换也行
*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值