什么是完数?

如果一个数恰好等于它的真因子之和,则称该数为完数。

第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6。第二个完全数是28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。

实现目标

寻找10000以内的完数,并且实现用链表存放完数的因子,程序实现整个运行所需时间。

代码实现

#include<stdio.h>
#include<stdlib.h>
#include <time.h>//定义一个单链表存放完数
typedef struct LNode{int data;struct LNode *next;
}LNode,*LinkList;bool initlist(LinkList &L){L = (LNode *)malloc(sizeof(LNode));L -> next = NULL;return true;
}void findwanshu(LinkList &L,int num){for (int i=1;i<=num;i++){int sum = 0;for (int j=1;j<=i/2;j++){if(i%j == 0){sum = sum + j;}}if (sum == i){LNode *s = (LNode *)malloc(sizeof(LNode));s -> data = 0;s -> next = NULL;L -> next = s;for (int k=1;k<=sum/2;k++){if (sum%k==0){  s -> data = sum;LNode *p = (LNode *)malloc(sizeof(LNode));p -> data = k;p -> next = s -> next;s -> next = p;}}LNode *find = s->next;printf("%d的因子是",s->data);while(find != NULL){int yinzi = find -> data;find = find -> next;printf("%d",yinzi);   if (find != NULL){printf(",");}   }printf("\n\n");}}
}int main(){clock_t start, end;start = clock();LinkList(L);initlist(L);findwanshu(L,10000);end = clock();double Total_time = (double)(end - start) / CLOCKS_PER_SEC; //单位换算成秒printf("程序用时 time = %lf s\n",Total_time);return 0;
}

代码运行效果

总结

1.用单链表存放完数的因子并输出的过程相当于一个链栈。栈的特点是先入后出。所以对于先存放的因子总是后输出。

2.完数中的因子可以用”%“方式表达,能够整除的为其中一个因数。

算法之寻找完数(C语言)相关推荐

  1. 第5关:C循环-寻找完数-------C语言程序设计技术(循环结构程序设计2)

    第5关:C循环-寻找完数-------C语言程序设计技术(循环结构程序设计2) #include<stdio.h>int main(void){ /*********Begin****** ...

  2. 【C语言】(错题整理) 寻找完数、字符串中各类字符数的统计、最大公约数和最小公倍数、回文数计算 (循环、函数相关内容)

    目录 一.循环 1.寻找完数(计算因子例题) 2.字符串中各类字符数的统计 3.最大公约数和最小公倍数 求最大公约数: 最小公倍数:最小公倍数=两整数的乘积÷最大公约数 二.函数 1.回文数计算 本篇 ...

  3. C++ 寻找完数 | Java 完数

    完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数.它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身.如果一个数恰好等于它的因子之和,则称该数为&q ...

  4. Java算法(八)详细解析:寻找完数

    完数是指一个数的所有因子相加起来等于本身.如 6 = 2 + 3 + 1: 题目:一个数如果恰好等于它的因子之和,这个数就称为 "完数 ".例如6=1+2+3.编程     找出1 ...

  5. C语言简易程序设计————20、寻找完数

    无意中发现了一个巨牛巨牛的人工智能教程,忍不住分享一下给大家.教程不仅是零基础,通俗易懂,小白也能学,而且非常风趣幽默,还时不时有内涵段子,像看小说一样,哈哈-我正在学习中,觉得太牛了,所以分享给大家 ...

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

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

  7. 1000以内完数c语言程序_C语言经典面试题目及答案详解(二)

    接着上次来说,C语言经典面试题目及答案详解(一)当中大部分是一些概念和理解的东西 ,今天说一说实践操作,有关c的经典程序. 1.输出9*9口诀.共9行9列,i控制行,j控制列. #include &q ...

  8. java 蓝桥杯算法训练 求完数(题解)

    试题 算法训练 8-2求完数 资源限制 时间限制:50.0s 内存限制:256.0MB 问题描述 如果一个自然数的所有小于自身的因子之和等于该数,则称为完数.设计算法,打印1-9999之间的所有完数. ...

  9. 200 300的完数 c语言,C语言求完数(完全数)(详解版)

    问题描述 求某一范围内完数的个数. 如果一个数等于它的因子之和,则称该数为"完数"(或"完全数").例如,6的因子为1.2.3,而 6=1+2+3,因此6是&q ...

  10. c语言200-500完数,C语言求完数(完全数)(详解版)

    问题描述 求某一范围内完数的个数. 如果一个数等于它的因子之和,则称该数为"完数"(或"完全数").例如,6的因子为1.2.3,而 6=1+2+3,因此6是&q ...

最新文章

  1. iOS 之 IQKeyboardManager 解决使用UITableView 界面上移问题
  2. 思维dp ---- Codeforces Round #722 (Div. 1) B. Kavi on Pairing Duty [思维dp + 数学]
  3. 浅谈Oracle Online redo log
  4. Nginx——域名|端口|目录请求转发配置DEMO
  5. css 固定内容显示范围,css之让文字在一定范围内显示,不超过固定的宽度和高度...
  6. 基于ArcGIS10.0和Oracle10g的空间数据管理平台(C#开发)-数据库设计
  7. hadoop fs:du统计hdfs文件(目录下文件)大小的用法
  8. Serializer字段和选项
  9. 审计工作存在的难点和问题_电力工程造价审计的难点与对策有哪些?学习安装电力造价广联达计价看这里!!...
  10. 基于JAVA+SpringMVC+MYSQL的在线招标管理系统
  11. MATLAB1阶零模型,MATLAB 空间计量模型的实现
  12. 搭建Zabbix Proxy HA
  13. Android Studio - xml布局文件不显示代码怎么办?
  14. https协议为什么比http协议更加安全
  15. Centos安装交叉编译工具链
  16. pythonexcel源码_Python对Excel操作详解_Python教程
  17. 计算机网络里面ap是什么,网络ap是什么意思
  18. 麻雀优化算法 SSA python实现
  19. 关于MAC安装windows【支持老版本】 支持安装全系列windows
  20. 2019-11-29-Mastering_bitcoin

热门文章

  1. 【游戏开发框架】自制Unity通用游戏框架UnityXFramework,详细教程(Unity3D技能树 | tolua | 框架 | 热更新)
  2. 部署python爬虫_爬虫项目部署
  3. 吐血整理!Python常用第三方库,码住!!!
  4. 超实用windows软件推荐!新电脑必装哪些软件?
  5. CH341ser(usb转串口)驱动
  6. 基于小波变换的数字水印技术
  7. 二次与三次B样条曲线c++实现
  8. JSP入门:什么是JSP和Servlet?
  9. python中文分词+词频统计
  10. 介绍一下Win11单独设置耳机音量的方法