博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
水仙花数&素数&质因数分解的C语言实现
阅读量:6812 次
发布时间:2019-06-26

本文共 2094 字,大约阅读时间需要 6 分钟。

最近,我翻了一下之前的C语言教材,看了三个有意思的小程序,包括:寻找“水仙花数”、判断某数是否为素数、对一个数进行质因数分解。我想把这三个东西放到一个程序中,便写下了此文。

 

算法步骤

1. 寻找“水仙花数”。

“水仙花数”是指一个三位数,其各位数字的立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。

 

2. 判断某数是否为素数。

素数是指只能被1和它本身整除的数,判断一个数是否为素数的方法:用这个数分别去除以2到这个数的平方根,如果能被整除,则表明此数不是素数,反之是素数。

 

3. 对一个数进行质因数分解。

对一个数n进行质因数分解,应先找到一个质数k(从最小的2开始),然后按下述步骤进行:

(1) 如果这个质数恰好等于n,则说明分解质因数的过程已经结束。 

(2) 如果n不等于k,但n能被k整除,则应用n除以k的商作为新的正整数n,重复执行第一步。

(3) 如果n不能被k整除,则用k+1作为k的新值,重复执行第一步。

 

本程序流程

本程序分三步走:第一步,寻找“水仙花数”;第二步,判断找到的“水仙花数”是否是素数;第三步,如果不是素数,则对这个数进行质因数分解。

 

C程序代码

/*********************************************************************** 版权所有 (C)2015, Zhou Zhaoxiong。** 文件名称:AlgorithmStudy.c* 文件标识:无* 内容摘要:算法学习: 水仙花数+素数+质因数分解* 其它说明:无* 当前版本:V1.0* 作    者:Zhou Zhaoxiong* 完成日期:20150327***********************************************************************/#include #include   typedef signed   int    INT32;typedef unsigned char   UINT8;typedef unsigned int    UINT32;  /*********************************************************************** 功能描述:主函数* 输入参数:无* 输出参数:无* 返 回 值:无* 其它说明:无* 修改日期      版本号       修改人          修改内容* -------------------------------------------------------------------* 20150327       V1.0     Zhou Zhaoxiong       创建***********************************************************************/INT32 main(){       UINT32 iBaiWei         = 0;     // 三位数的百位数字       UINT32 iShiWei         = 0;     // 三位数的十位数字       UINT32 iGeWei          = 0;     // 三位数的个位数字       UINT32 iJudgedNum      = 0;     // 三位数, 从101开始算起       UINT8 iPrimeFlag       = 0;     // 一个数是否是素数的标识       UINT32 iLoopFlag       = 0;     // 用于循环中       UINT32 iDaffodilNumber = 0;     // 水仙花数       UINT32 iTempNum        = 0;     // 作为过渡数        for (iJudgedNum = 101; iJudgedNum

编译命令

本程序在Linux下进行编译,编译命令为:gcc -g -o AlgorithmStudyAlgorithmStudy.c –lm。

注意,不要忽略了“–lm”,否则编译时会报错,提示找不到“sqrt”。

 

程序运行结果

编译成功之后,执行“AlgorithmStudy”命令,结果如下:

153是一个水仙花数.

153不是素数.

153=3*3*17

------

370是一个水仙花数.

370不是素数.

370=2*5*37

------

371是一个水仙花数.

371不是素数.

371=7*53

------

407是一个水仙花数.

407不是素数.

407=11*37

------

 

 

---------------------------------------------------

本人微信公众号:zhouzxi,请扫描以下二维码:

 

你可能感兴趣的文章
Flutter实战(一)写一个天气查询的APP
查看>>
Python零基础学习笔记(十二)—— 字符串及其常用方法
查看>>
Webpack 和 Gulp 构建伪命令行项目
查看>>
在线面试, 前端, 提纲, 草稿
查看>>
hive_异常_01_ Terminal initialization failed; falling back to unsupported
查看>>
分布式事务键值数据库 TiKV 加入 CNCF 沙箱孵化器
查看>>
Vue - day1
查看>>
kvm.virsh常用命令篇
查看>>
[Hive]Hive使用指南四 客户端导入数据
查看>>
10.JUC线程高级-线程八锁
查看>>
Apache Flink轻量级异步快照机制源码分析
查看>>
PostgreSQL 11 preview - 分区表 增强 汇总
查看>>
MediaCodec在Android视频硬解码组件的应用
查看>>
用JAVA自己画一张二维码
查看>>
Flutter Engine线程管理与Dart Isolate机制
查看>>
美国泛达公司:下一代数据中心的光缆布线系统
查看>>
以太坊(ethereum)技术开发相关资料
查看>>
Pandas数据排序
查看>>
gulp常用插件
查看>>
2018 前端趋势:更一致,更简单
查看>>