C语言经典例19-完数

C语言经典算法实例7:完数 完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。如果一个数恰好等于它的真因子之和,则称该数为“完全数”。第一个完全数是6,第二个完全数是28,第三个完全数是496,后面的完全数还有8128、33550336等等。如果一个数恰好等于它的真因子之和,则称该数为“完全数”。 阅读详情

1 题目

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

因子:假如整数n除以m,结果是无余数的整数,那么我们称m就是n的因子

2 分析

本题想要验证某个数,必须计算它的因子,计算因子的方法见 C语言经典例14-将一个正整数分解质因数 ,计算出因子后,在求和判断即可

3 实现

#include <stdio.h>

int main() {
   int a[100]; // 临时数组用于保存因子
   for (int i = 2; i <= 1000; i++) {
      int sum = 1; // 1是所有数的因子,直接保存
      a[0] = 1;
      int k = 0; // k用于保存数组中储存了多少因子,用于最后输出
      for (int j = 2; j <= (i/2); j++) { // 分解因子
         if (i % j == 0) { // 若能整除则j为因子之一
            sum += j; // 累加因子到总和
            a[++k] = j; // 将因子保存到数组中,移动数组标号
         }
      }
      if (i == sum) { // 判断该数的因子的和是否等于该数
         printf("%d = %d", i, a[0]); // 输出计算式
         for (int n = 1; n <= k; n++) {
            printf(" + %d", a[n]);
         }
         printf("\n");
      }     
   }
   return 0;
}

4 运行结果

6 = 1 + 2 + 3
28 = 1 + 2 + 4 + 7 + 14
496 = 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248
经典C语言程序100例之十九 【程序19】 题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程    找出1000以内的所有完数。 程序分析:请参照程序<–上页程序14. 2.程序源代码: main() { static int k[10]; int i,j,n,s; for(j=2;j<1000;j++)  {  n=-1;  s=j;   for(i=1;i   {    if((j%i)0)    { n++;     s=s-i;     k[n]=i;    }   }  if( 阅读详情

相关推荐

ARM架构下Horizon Client安装全攻略:从依赖检查到环境变量配置

本文详细介绍了在ARM架构设备上安装VMware Horizon Client的全过程,包括依赖检查、软件包获取、系统部署和环境变量配置。特别针对华为鲲鹏等ARM平台,提供了从基础准备到性能优化的完整指南,帮助用户高效完成虚拟桌面客户端的部署与调优。

github5actions的博客 553

找出1000以内的所有完数

/*一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。*/ #include <stdio.h> int main(int argc, const char * argv[]) { for (int i = 2; i < 1000; i++) { int sum = 1; ...

weixin_30572613的博客 2037

保姆级教程:用BIGEMAP和Global Mapper搞定5米精度DEM高程数据下载与处理

本文提供了一份详细的5米精度DEM高程数据处理教程,涵盖从BIGEMAP下载到Global Mapper处理的完整流程。通过实战案例和避坑指南,帮助用户掌握高效下载DEM数据、优化等高线生成及坐标系转换的关键技巧,适用于GIS新手和专业人士。

weixin_34169322的博客 390

【C语言和Java】求“完数”

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

m0_58734370的博客 1万+

雷电模拟器安装面具环境并过软件检测系列(看这一篇就够了!)

雷电模拟器安装面具环境并过基本软件的环境检测

qq_45059975的博客 6万+

PDS联合Modelsim仿真报错(Error loading design) line6报错 -novopt已禁用 (全网最详细!!!!!)

发现这个文档是Pango自动生成的,也就是说每一次我们点击"Run Behavior Simulation"的时候,PDS都会自动生成一次这个./run_behav_simulate.tcl文件,所以就算我们这一次把这个文件修改了,我点击"Run Behavior Simulation"想让它再跑一次正确的仿真,它此时又重新生成了这个带有-novopt的错误tcl文件,仿真依旧不能成功。问题真的是出在这里,那我们修改这个./run_behav_simulate.tcl文件就好了,但事实并非如此!

weixin_74058783的博客 3191

【C语言】完数

完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。 #include<stdio.h> int perfect(int n){ int i,s=0; for(i=1;i<=n-1;i++) if(n%i==0) s+=i; return (s==n); //s和n相等,括号内值为1;反之为0 } void main(){

GuYinChenLan的博客 2507

STM32F103RC学习(一)

STM32F103RC学习(一)

Cat_South_North的博客 6057

【C语言】求1000以内的“完数”,并打印!超详细!必备技能!一看就会!

完数定义:一个数恰好等于它的,这个数就称为“完数”

Gao123456fy的博客 1万+

机器人多学科仿真软件:Webots_(19).Webots的插件与扩展开发

通过上述步骤,您可以开发和使用Webots的插件、扩展和接口,以增强其功能和灵活性。

kkchenjj的博客 925

基于libVLC的视频播放器之四:直接使用libVLC

一.效果 播放本地文件 播放网络url:rtsp://3.84.6.190/vod/mp4:BigBuckBunny_115k.mov 二.实现 既然有VLC-Qt,为什么还要直接调用libVLC呢,因为直接调用会加深对整个播放流程的理解,方便后面修改VLC-Qt源码。 注意事项: 1.编译报错:error C2065: “libvlc_media_read_cb”: 未声明的标识符。修改如下: 2.libvlc_new(0, nullptr)返回null 将plugins

草上爬的博客 5049

C语言经典100例(19)找出1000以内的完数

ps:受十四题影响,把这个题想的太复杂了,一直输不出结果-_-||

jlfcc的博客 217

UI渲染顺序:合批为何被拆碎?

在 Hierarchy 中,避免出现:Image(列表1) → Text(列表1) → 特效 → Image(列表2) → Text(列表2)…若可行,在逻辑上把布局组织成“同类元素集中”:例如:列表行中,Image 集中、Text 集中;或者接受 Text 本身就拆出一批,关键是不要在 Text 中间再插入别的材质。现实中不一定能做到完美的“所有 Image 连在一起”,但你会有一个意识:同一 Canvas 内,如果你把不同材质的元素交错穿插,

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 85

【C语言经典100例】-- 19 一个数如果恰好等于它的因子之和,这个数就称为“完数“。例如6=1+2+3.编程找出1000以内的所有完数。

问题描述: 一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。 程序实现: #include<stdio.h> #define N 1000 int main() { int i,j,k,n,sum; int a[256]; for(i=2;i<=N;i++) { sum=a[0]=1; k=0; for(j=2;j<=(i/2);j++)

qq_45822555的博客 376

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

【C语言经典例题100解答】

收纳整理C语言各类经典例题100题,并给出实例代码和运行结果

依然的专栏 9041

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

菜鸟教程-C语言经典100示例(前50)

这两天正在看基础的算法,在做的时候肯定不能避免的接触了菜鸟上的经典100例,但是使用的时候发现并不是那么的方便,因为它只是给了序号,如果查找某一问题的话很不方便,所以做了这篇博客,希望给自己和其他人带来帮助! 1,有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 2,企业发放的奖金根据利润提成。其实就是考分类。 3,一个整数,它加上100后是一个完全平方数,再加上...

zlhcsm的博客 6万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

1000以内完数c语言程序_c语言完数(c语言输出1到1000所有完数)

要 求0到1000内的完数并输出 的c语言程序/*完数,即完美数,一个数如果恰好等于除它本身外的因子之和,这个数就称为完数。例如6=1+2+3.(6的因子是1,2,3)*/#include void main() { int i,j,k,h,s,sum; int a[200];//20个.main(){int i,k,sum=0;for(i=1;i{ sum=0; for(k=1;kif(i%k=...

weixin_39861054的博客 8625

10个基础且实用的C语言经典实例【附源码】

强烈推荐两个专栏 C语言专栏 C语言实例专栏 1、输出9*9口诀。共9行9列,i控制行,j控制列。 /** * @author: 冲哥 * @date: 2022/4/19 * @description:实现乘法口诀 * @公众号: C语言中文社区 */ #include <stdio.h> int main() { int i, j, result; for (i = 1; i < 10; i++) { for (j = 1; j &lt

专注于C语言编程干货分享 8710

C语言经典100例-第一篇

题目来自菜鸟教程,所写内容,如有问题,还请见谅。

2301_77118121的博客 2077

C语言学习-菜鸟教程C经典100例-练习19

摘要:本文通过C语言程序找出1000以内的所有完数(即等于其所有真因子之和的数)。程序对1-1000的每个数n,计算其所有真因子之和,若和等于n则输出该数及其因子分解式。结果显示1000以内的完数共有3个:6(1+2+3)、28(1+2+4+7+14)和496(1+2+4+8+16+31+62+124+248)。该算法采用双重循环结构,外层遍历候选数,内层计算因子和并验证完数条件。

2301_77670476的博客 481

C语言经典例题(菜鸟教程100例)

学习c语言基础,怎么能少了菜鸟教程上的100道例题呢,这里整理一下每道题的链接,希望大家能享受学习的乐趣 1,有1,2,3,4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 2,企业发放的奖金根据利润提成。其实就是考分类。 3,一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 4,输入某年某月某日,判断这一天是这一年的第几天? 5,...

zwish的信安之路 30万+

完数c++语言程序_C语言经典100题(19)

1上期答案揭晓首先给大家看看上一篇文章C语言经典100题(18)中第三部分编程题的答案:#includeint main(){ int s=0,a,n,t; printf("请输入 a 和 n:\n"); scanf("%d%d",&a,&n); t=a; while(n>0) { s+=t; a=a*...

weixin_39603613的博客 547

C语言经典100例精选

1、题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? #include<stdio.h> //题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? int main(){ int cnt = 0; for(int i = 1; i <= 4; i++){ for(int j =1;...

starchao 4303

C语言经典100例——day2(一天十道)

题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,(2)如果nk,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....把n的值赋给m,m=9,把余数的值赋给n,n=3(m%n=9%3==0)

m0_74316795的博客 1067

C语言经典100例之完数判断:从暴力循环到平方根优化

在学习C语言编程的过程中,循环结构是最基础也是最重要的控制流程之一。而经典习题往往以数学问题为切入点,帮助初学者在实战中理解嵌套循环、取模运算、状态累加和格式化输出等核心概念。完数判断正是这样一道具有代表性的题目——通过检测一个数的所有真因子之和是否等于自身,来锻炼逻辑转写与代码实现能力。对于刚接触循环嵌套的开发者,这类题目能够直观感受两层循环的执行顺序与变量作用域;对于进阶者,则可通过因子成对、筛法预处理等思路进一步优化算法性能。完数作为数学与编程的结合点,也常用于在线练习、算法入门和代码性能对比场景。本

weixin_30768881的博客 217

【C语言基础案例目录】经典C语言程序设计100例目录(附100例题目)

《C语言基础案例目录》精选100个经典程序设计案例,分为10个部分(每部分10例),涵盖数字组合、奖金计算、完全平方数等基础算法。案例由浅入深,包含素数判断、水仙花数、斐波那契数列等数学问题,以及递归、绘图、位运算等进阶内容。每个案例提供题目描述和源码解析,适合C语言学习者系统练习编程思维和实战能力。从基础控制结构到复杂算法实现,全面培养程序设计能力。

yuhuasheng1997的博客 1513
上一篇: C语言经典例18-求累加和
下一篇: 计算机网络第二章:物理层
syzdev
博客等级 码龄9年 852粉丝 149原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值