【小白必懂】C语言求完全数

注意:学生党如果存在付费问题可以加我好友,我可以开单篇短时间的免费哟~ 私聊我就好~

情景再现

👸小媛:小C,你知道什么是完全数吗?

🐰小C:知道呀,难道是今天老师又出题你又不懂了嘛。

👸小媛:哈哈哈,是的,我现在脑子懵懵的,我的自信心完全受到了打击。

🐰小C:没事的,都是小问题。

👸小媛:其实我是发现老师出的题目都是数学有关,我数学又不好,头都大了,很多知识我都不懂是怎么回事。

🐰小C:慢慢补呗,都是小东西,不难的。

👸小媛:那你赶紧跟我说吧,我要学习。

🐰小C:哈哈哈,行嘞。我们在写求完全数时必须要知道什么是完全数,这个你会吧?

👸小媛:就是不会,所以我就第一步就卡死了。

🐰小C:哈哈哈,那我就跟你解释一下什么是完全数吧。

👸小媛:嗯,悉听教导。

🐰小C:完全数就是这个数的因子等于这个数本身,就是完全数。

👸小媛:???什么是因子,老师也是这样说的,我又不敢问,所以就听不懂。

🐰小C:因子就是可以整除这个数的数,例如一个数 6,可以整除 6 的有哪些呢?

👸小媛:1、2、3 吗?

🐰小C:是的,那你看看 1、2、3 加起来等于几呢?

👸小媛:1、2、3 相加等于 6。

🐰小C:这个 6 是不是本身的数?因为我们刚刚说的是 6 这个数能够被那几个数整除。

👸小媛:是的,难道这样的数就叫做完全数吗?

🐰小C:对的,懂了吧?然后 1、2、3 就叫做这个数的因子。

👸小媛:唔,那么简单?就这?

🐰小C:对呀,你以为有多难。

👸小媛:那代码怎么写呢?多谢小 C 教导。

🐰小C:你就是懒。首先我们算一下一个一个数有是数能够整除,你说怎么做?

👸小媛:不懂。

🐰小C:那我们有一个数 1000,如何判断有什么数能够整除这个数?

👸小媛:用循环吗?

🐰小C:是的,直接使用一个循环,设置一个循环变量,小于 1000 开始递增,如果取模 1000 为 0,那么就表示可以整除。

👸小媛:唔,我懂了,你看看代码是不是这样。

#include<stdio.h>
int main()
{
    int a;
    printf("能够被整除的数有:");
    for(a=1;a<1000;a++){
		if(1000%a==0){
			printf("%d\n",a);
		}
	}
    
    return 0;
}

👸小媛:下面是结果。

🐰小C:不错,那我们的下一步是什么?

👸小媛:下一步呀?对呀,我们的下一步是啥?我忘了。

🐰小C:我们的下一步就开始记录这些数的和是否等于本身 1000。

👸小媛:对哟,我懂代码怎么写了。

#include<stdio.h>
int main()
{
    int a,s=0;
    printf("能够被整除的数有:");
    for(a=1;a<1000;a++){
		if(1000%a==0){
			printf("%d\n",a);
			s=s+a;
		}
	}
    
    if(s==1000){
    	printf("1000 是完全数\n");
	}else{
		printf("1000 不是完全数\n");
	}
    
    return 0;
}

👸小媛:然后得出结果,1000 不是完全数。

🐰小C:哈哈哈,会了吧?

👸小媛:会了,挺简单的,好了,那我就先走了,多谢小 C教导。

🐰小C:别急,你想想题目是啥?

👸小媛:题目是说求一个范围内的完全数有哪些,怎么了?

🐰小C:你现在不是只求了一个数 1000,没有求得一个范围的所有数呢。

👸小媛:啊!对哟,所以应该是1-10000 或者说 1-100000 之内有哪些完全数。

🐰小C:索引你这个题还没做完呢。

👸小媛:小C 哥求教。

🐰小C:其实很简单,你想想,之前的代码中 1000 是一个数,我们把这个 1000 编程一个可递增的变量不就好了?

👸小媛:你的意思是说这个 1000 用一个循环变量来控制?然后弄个循环嵌套?

🐰小C:是的,你看看下面的代码。

#include<stdio.h>
int main()
{
    int a,s=0,j=1;
    printf("完全数有:");
    while(j<10000){
    	s=0;
		for(a=1;a<j;a++){
			if(j%a==0){
				s=s+a;
			}
		}
	    
	    if(s==j){
	    	printf("%d 是完全数\n",j);
		}
		j=j+1;
	}

    return 0;
}

👸小媛:唔,上面的代码就是在原有的代码上加了一个外层循环,就把那个 1000 当作了循环变量,然后把这个外层循环变量 j 拿到之前的代码中替换掉1000就可以了?

🐰小C:是的,还有一点就是把那个计算因子和的变量每次都要置零,这样每次加的数才不会保留上一次的结果,也就是 s=0; 这个代码。

👸小媛:懂了,谢谢小 C,我运行出来了。

🐰小C:那就行,那就没啥问题了。

👸小媛:好耶~

前言

本专栏内容将会以轻松、简单的方式完成习题的解答,用情景再现的文章风格使读者能够在轻松愉悦的阅读氛围中完成知识的吸收,本专栏考虑读者的吸收能力,不讲解过多高效的计算方法,降低阅读门槛,希望各位多多支持~

作者简介

作者名:1_bit

简介:CSDN博客专家,2020年博客之星TOP5,蓝桥签约作者。15-16年曾在网上直播,带领一批程序小白走上程序员之路。欢迎各位小白加我咨询我相关信息,迷茫的你会找到答案。

博客地址:https://i1bit.blog.csdn.net


本专栏已参加 CSDN 蓄力计划,感谢读者支持。

  • 35
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

1_bit

你的余额交给我吧

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

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

打赏作者

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

抵扣说明:

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

余额充值