完美数的算法设计(C语言)

2023-10-27

完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。如果一个数恰好等于它的因子之和,则称该数为“完全数”。
寻找完美的数
题目描述:所谓完美的数是这个数除了它自身之外,所有因子的和等于该数。
例如: 28,其因子包括:1,2,4,7,14,28,除了28之外,1+2+4+7+14 = 28
再例如:6,其因子包括:1,2,3,6 除了6之外,1+2+3 = 6
寻找 1~10000之间的完美的数。

法一程序代码如下:

#include<stdio.h>
int fun_perfect(int number)
{
	int i,sum=0;
	for(i=1;i<number;i++)
	{
		if(number%i==0){
			sum+=i;
		}
		if(sum>number)
		return 0;
	}
	return sum==number;
}
int main()
{
	int i; 
	for(i=2;i<10000;i++)
	{
		if(fun_perfect(i))
		printf("%d\n",i);
	}
	return 0;
}

很明显,此法较为暴力,当搜寻范围较小时,运行的效率可以被接受,但倘若所搜寻的范围高达十几万,此法运行效率较低需十几秒。

法二:优化暴力搜索程序代码如下:

#include<stdio.h>
#include<math.h>
int fun_perfect(int number)
{
	int i,sum=1;
	for(i=2;i*i<number;i++)
	{
		if(number%i==0)
		{
			sum+=i;
			if(i*i!=number)
			{
				sum+=number/i;
			}
		}
	}
	return sum==number;
}
int main()
{
	int i; 
	for(i=2;i<100000;i++)
	{
		if(fun_perfect(i))
		printf("%d\n",i);
	}
	return 0;
}

法三:利用推导公式:
大数学家欧拉曾推算出完全数的获得公式:如果p是质数,且2p-1也是质数,那么(2p-1)X2^(p-1)便是一个完全数。
例如p=2,是一个质数,2p-1=3也是质数,(2p-1)X2^(p-1)=3X2=6,是完全数。
例如p=3,是一个质数,2p-1=7也是质数,(2p-1)X2^(p-1)=7X4=28,是完全数。
例如p=5,是一个质数,2p-1=31也是质数,(2p-1)X2^(p-1)=31X16=496是完全数。
但是2p-1什么条件下才是质数呢?事实上,当2p-1是质数的时候,称其为梅森素数。到2013年2月6日为止,人类只发现了48个梅森素数,较小的有3、7、31、127等。

程序代码如下:

#include<stdio.h>
#include<math.h>
int main()
{
	int arr[5]={2,3,5,7,11};
	for(int i=0;i<5;i++)
	{
		int num=pow(2,arr[i]-1)*(pow(2,arr[i])-1);
		if(num<100000){
			printf("%d\n",num);
		}
	}
	return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

完美数的算法设计(C语言) 的相关文章

  • mysql与mssql if else的使用语法区别

    mysql if else做为控制流语句的使用 样例 if search condition then statement list elseif search condition then statement list else stat
  • Centos7 开机卡死在桌面

    问题 Centos7 开机死卡成了这样 一动不动 如下图 原因 一般来说是一些开机自启的东西使得Centos卡死 有可能是在 etc rc d rc local文件里加入的脚本 也有可能 etc fstab文件里面自动挂载的硬盘 解决方法
  • 多线程实现大批量数据查询

    优化一个系统中的功能 需要通过判断进行多次的查库 查库的性能是单表 条件有索引 public Map
  • 中国高房价时期it从业人员指导工资简易计算公式-国标(GB54321)

    版权所有 瞿正峰 转载请保留版权声明 http blog csdn net gonxi 中国高房价时期it从业人员指导工资简易计算公式 在线计算器 http www gonxi com 快去算算你的工资 A 10年期间的平均每月工资 Wa
  • Fastjson出现$ref问题

    解决FastJson中 ref 循环引用检测 的问题的几种方式 一 现象 项目中用json形式来存储一个集合对象 用fastjson发现多了一些东西 ref 了解之后才发现是重复引用的问题 id 1 orderList id 2 date
  • 如何快速建立一个优秀的账号体系

    在2014年下半年开始 只支持第三方账号登陆的应用在提交苹果的appstore审核的时候被拒绝 拒信如下 If we chose to log in with 微信 we were required toinstall 微信 before
  • VulnHub实战篇六:Me And My Girlfriend靶机渗透记录

    0x00靶机信息 下载地址 下载地址 攻击机ip 172 16 12 137 靶机ip 172 16 12 141 目标 getshell 获取两个flag 并提权至root 0x01过程 首先识别一下目标开启的端口和服务 可以看到目标开启
  • BurpSuite扩展--python扩展运行环境配置

    BurpSuite扩展 python扩展运行环境配置 Burp扩展可以用Java Python或Ruby编写 Java扩展可以直接在Burp中运行 而无需任何其他配置 在安装以Python或Ruby编写的扩展之前 您需要下载Jython或J
  • git 远程删除不需要的文件

    git clone git 192 168 2 246 dev ncrm git 23 find name target 24 find name target xargs rm rf 25 find name target 26 git
  • WinEdt 31天试用期到期解决方案

    WinEdt 在试用期过后 会频繁出现 WinEdt s trial period of 31 days has elapsed 的提示窗口 解决方案 修改脚本Exit edt 从Options Options Interface Adva
  • 秒传的原理

    在本文中 我们将介绍网盘秒传的基本原理和实现方法 以及秒传的优缺点和应用场景 网盘秒传的基本原理 网盘秒传的基本原理是利用哈希算法 如MD5或SHA 1 对文件进行特征值提取 然后与服务器上已有的文件特征值进行比对 如果发现相同的特征值 就
  • 2019年“华为杯”研究生数学建模比赛总结

    前言 参加数学建模比赛是学习生涯甚至是人生的一次难忘的经历 不管是比赛过程还是最终的结果 无论最终结果如何 自我学习生涯至今 在研究生期间参加一次数学建模更重要的是我对数学建模比赛的一种情怀 回想本科期间参加数学建模竞赛 从校赛到省赛 再到
  • C++实现softmax函数(std::vector)

    参考博客 激活函数之softmax介绍及C 实现及其评论区 Lambda使用参考博客 C 11 Lambda表达式 函数功能 输入vector
  • 远程工作高效方法(几年前帖子,私密变公开后时间就变了)

    1 要和居住环境分开 我在阳台上办公 2 制订计划 每天写到纸上 贴在墙上 3 时间调整 以前上班时 有公司上班时间 先在要调整 比如 上午九点才开始工作 在家可以7点起床 困了再睡 4 每小时是工作内容 学习内容50分钟 视频教程1个或者
  • 2021->2022

    也就随便写写了 记得去年的年终和期望目标 我写了好多个方面的自我剖析 可能大概有三四千字吧 再回去看看 还是水了一些 这很正常 大多数人都是这样的 况且我比较佛系 复盘还是要的 期望还是要提的 虽然明知一年过后 可能达成的不多 但这也是一次
  • 瞎写

    有人说人生有两大禁忌 一忌踌躇满志 一忌心灰意冷 别人我不知道 但是对我来说 似乎一直都在这两种情绪之间跳转 说实话写这篇文章的此时我应该是处于心灰意冷这个点的 下面就随便说说当处于这个点时 自己产生的一些想法 首先 处于这个状态时整个人肯
  • 同一无线络下电脑会打不开个别的网站网页,而手机却可以打开。

    今天打开一个CSDN博客链接 等了好长时间却打不开 后来还发现新浪微博也打不开 昨天还可以 今天就不行了 我的笔记本也没动什么特别的东西 然后我就分析原因 一 首先我的网友可以打开我打不开的这两个链接 相当于打不开链接的代表 说明网站是可以
  • Spring注解开发

    Spring配置繁重 注解提高开发速度 在applicationContext xml中配置组件扫描 作用是指定哪个包及其子包下的Bean需要进行扫描以便识别使用注解配置的类 字段和方法
  • 集合的初始容量与扩容

    arraylist 0 50 linkedlist 0 链表每次加一 hashmap 16 加载因子0 75 超过容量的0 75才会进行扩容 扩容 容量的2倍 2 当某个桶的链表长度达到8 就转成红黑树
  • 关于Linux下的stat()函数

    文章目录 一 stat 的组成 二 具体使用 1 简单的ls程序 2 运行结果如下 一 stat 的组成 头文件 include

随机推荐

  • python类的简单定义和使用

    http www 01happy com python class define use python中类的声明使用关键词class 可以提供一个可选的父类或者说基类 如果没有合适的基类 那就用object作为基类 定义格式 class 类
  • C++经典面试题之---String类

    前段时间 S2的徐 同学去了一家作核能的企业做软件测试 在应聘的时候出了这样一道题目 写出string类的构造函数 拷贝构造函数 析构函数 赋值函数 这道题目是一道相当经典的C 开发题目 是面试C 程序员时经常考的 但这次无奈徐 碰上了 为
  • C语言malloc函数的用法

    在使用malloc函数前 需要调用头文件 include
  • 原创 私藏的实用工具/学习网站我贡献出来了

    原创 私藏的实用工具 学习网站我贡献出来了 置顶 2019 10 28 14 49 33 帅地 阅读数 14323 文章标签 资源 分享 程序员 更多 分类专栏 其他 版权声明 本文为博主原创文章 遵循 CC 4 0 BY SA 版权协议
  • 资源变现小程序开通流量主教程

    介绍 牛云资源变现专为内容 资源下载场景设计 一站式解决内容带货 流量 资源变现难题 uniCloud云开发无需购买服务器和域名 助力每一位内容创业者 传统小程序开通流量主要求小程序累计独立访客 UV 1000以上 本项目基于uniAD u
  • 华为机试题--排序问题

    题目来自 http www cnblogs com Trony archive 2012 10 01 2709959 html 华为机试题目 给定一个数组input 如果数组长度n为奇数 则将数组中最大的元素放到 output 数组最中间的
  • 1.1.10. Bayesian Regression(贝叶斯回归)

    1 1 10 Bayesian Regression 一 简介 贝叶斯概率理论体系在机器学习中有着举足轻重的地位 其实很多时候 我们机器学习的算法从本质上来看 就是一种统计学习方法 所以 贝叶斯概率学派的很多思想 是理解机器学习的关键所在
  • ss导航java宝典_ss导航绅士宝典app下载-ss导航绅士宝典百度网盘官方版下载v1.1.0-七度网...

    ss导航绅士宝典app是一款非常好用的追漫神器 这里包含了国内外各种优质漫画 而且漫画的连载速度非常快 全网漫画免费畅读 还可以在线和漫友一起互动交流哦 很好的打发了闲暇时光 感兴趣的用户可以来七度网下载这款ss导航绅士宝典app哦 ss导
  • 最小二乘支持向量机”在学习偏微分方程 (PDE) 解方面的应用(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 1 概述 本代码说明了 最小二乘支持向量机 在学习偏微分方程 PDE 解方面的应用 提供了一个示例 并将获得的结果与精确的
  • 云计算基础——基础设施安全

    基础设施安全概述 基础设施安全是云安全运行的基础 保证了计算机和网络的安全连接 基础实施安全包括计算 网络 存储等云计算资源的安全 物理设施 用户的配置和基础实施组件的实现是云计算中所有内容的基本组成部分 在云计算中 基础实施有两个层面 第
  • Python Pandas pandas.read_xml函数方法的使用

    Pandas是基于NumPy 的一种工具 该工具是为了解决数据分析任务而创建的 Pandas 纳入了大量库和一些标准的数据模型 提供了高效地操作大型数据集所需的工具 Pandas提供了大量能使我们快速便捷地处理数据的函数和方法 你很快就会发
  • FPGA—VGA 显示器显示彩条(附代码)

    目录 1 理论 2 实操 2 1 顶层设计 2 1 1 模块框图 2 1 2 代码编写 2 1 3 仿真验证 2 2 时钟生成模块 2 3 VGA时序控制模块 2 3 1 模块框图 2 3 2 波形图绘制 2 3 3 代码编写 2 3 4
  • 基于相关滤波器的追踪(Correlation Filter-based Tracking)原理

    基于相关滤波器的追踪 Correlation Filter based Tracking 原理 基于相关滤波器的追踪算法 典型的算法有KCF DSST STC SAMF等 这些算法的大致框架都是差不多的 介绍 在视频的第一帧给定目标的初始位
  • C++中int和char[]之间的转换

    1 整数转化字符串 sprintf 在头文件 include
  • 自建私人图床方案:使用Cpolar+树洞外链轻松部署超轻量级图床,实现高效图片存储

    文章目录 1 前言 2 树洞外链网站搭建 2 1 树洞外链下载和安装 2 2 树洞外链网页测试 2 3 cpolar的安装和注册 3 本地网页发布 3 1 Cpolar临时数据隧道 3 2 Cpolar稳定隧道 云端设置 3 3 Cpola
  • 用python 修改websocketpp头文件格式的时候发现python写csv文件时候有多余的双引号

    def transformer row str level int previous row if level 1 row row replace lt elif level 2 row row replace lt elif level
  • linux中脚本监测nginx状态并重启

    首先要确定nginx的安装位置 如果自定义安装则需要自己去找到nginx运行程序所在的位置 下面的编写和执行都是nginx通过源代码编译安装 运行程序所在的位置为 usr local nginx sbin nginx 确定nginx的使用端
  • mmsegmentation 之修改输入通道

    open mmlab有许多非常实用的框架 其中目标检测的话mmdetection确实很实用 但语义分割的话当属mmsegmentation 这篇博客介绍mmsegmentation如何将输入图像通道数修改为单通道 1 默认你自己已经用mms
  • Stable Diffusion核心算法DDPM解析

    DDPM Denoising Diffusion Probabilistic Model 去噪扩散概率模型 本文参考 一个视频看懂扩散模型DDPM原理推导 AI绘画底层模型 哔哩哔哩 bilibili 1 大概原理 从右往左为正向加噪过程
  • 完美数的算法设计(C语言)

    完全数 Perfect number 又称完美数或完备数 是一些特殊的自然数 它所有的真因子 即除了自身以外的约数 的和 即因子函数 恰好等于它本身 如果一个数恰好等于它的因子之和 则称该数为 完全数 寻找完美的数 题目描述 所谓完美的数是