C语言基础练习100--018(完数)

本文介绍了一个编程问题,即找出1000以内的所有完数。完数是指一个数等于其因子之和。通过分析和代码实现,博主展示了如何使用C语言编写程序来寻找这些完数,包括函数的定义和调用,以及循环和条件判断等编程技巧。虽然过程中遇到了一些困难,但最终成功实现了功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:一个数如果恰好等于它的因子之和,就称这个数为完数。例如6=1+2+3,编程找出1000以内所有的完数。

分析:

1.先要判断这是不是完数--看符合完数的条件-怎么拆分出这些因子--然后再找1000以内的所有完数

2. 拆分因子:用for循环嵌套if判断

#include<stdio.h>
int main(){
	int n,m=6;
	for(n=1;n<6;n++){
		if(m%n==0){
		printf("%d\n",n);
		}
	}
	printf("\n");
   return 0;
}

 3.找到一千以内的所有完数---下面我使用的是函数的调用

#include<stdio.h> //函数的调用
int compNum(int m){   //m类似于例题中的 6
    int n;
	int sum=0;
    for(n=1;n<m;n++){  //找m 的因数
		if(m%n==0){    
		   sum += n;
		}
	}
	if(m == sum){     //如果 m=因数相加
	  return 1;
	}else{
	   return 0;
	}

}
int main(){
  int compNum(int m); //函数m的调用
  int s;
  for(s=1;s<=1000;s++){ //在1000以内的所有完数
	  if(compNum(s)){
	    printf("%d\n",s);
	  }
  }


   return 0;
}


完数做起来还是比较难的,我试了很多次才可运行 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大战金刚龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值