水仙花数&素数&质因数分解的C语言实现

最近,我翻了一下之前的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程序代码

编译命令

本程序在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,请扫描以下二维码:

时间: 2024-10-12 14:16:31

水仙花数&素数&质因数分解的C语言实现的相关文章

C语言与水仙花数

C语言与水仙花数 水仙花数:前提三位数,"个位数的立方"加上"十位数的立方"加上"百位数的立方"恰好等于这个数. 我们来用C语言书写水仙花数: 方法一 #include <stdio.h> #include <stdlib.h> int main() { int i,j,k; for(i = 1;i<=9;i++){ //三位数的百位 for(j = 0;j<=9;j++){ //三位数的十位 for(k =

使用C#语言实现输出1000以内的水仙花数

所谓水仙花数,是指一个n位数(n>=3),它的每个位上的数字的n次幂之和等于它本身,例如:153=13+53+33.首先,我们应该解决的关键问题是,怎么通过C#语言判断一个数是不是水仙花数?既然水仙花数的定义是每个位上的数字的n次幂之和等于它本身,那么我们需要先分别得到一个数每个位上的数字,然后判断每个位上的数字的n次幂之和是否等于等于它本身.取出百位的数字可以使用 int a=i/100%10:(其中变量a存储百位数字.先将变量i中的值除以100,因为被除数和除数都是int类型的值,所以得到值

C语言输出100到999中所有的水仙花数

------------------------------------------------------------------------------------------------------ 水仙花数只是"自幂数"的一种,严格来说三位数的3次幂数才成为水仙花数. 附: 一位自幂数:独身数 两位自幂数:没有 三位自幂数:水仙花数 四位自幂数:四叶玫瑰数 五位自幂数:五角星数 六位自幂数:六合数 七位自幂数:北斗七星数 八位自幂数:八仙数 九位自幂数:九九重阳数 十位自幂数:

用python语言来判断一个数是否是水仙花数?

#用python语言来判断一个数是否是水仙花数? #水仙花数: # 1) 一个三位正整数 ( 即取值区间 [100,1000) ) # 2) 个位数字的立方+十位数字的立方+百位数字的立方=它本身  (即数字 abc = a**3 + b**3 + c**3) 代码: for a in range(1,10):    #定义百位数取值区间 (1,9)     for b in range(10):    #定义十位数取值区间 (0,9)         for c in range(10):  

C语言程序设计100例之(4):水仙花数

例4    水仙花数 题目描述 一个三位整数(100-999),若各位数的立方和等于该数自身,则称其为“水仙花数”(如:153=13+53+33),找出所有的这种数. 输入格式 没有输入 输出格式 若干行,每行1个数字. 输入样例 无 输出样例 153 * * * ... * * * (输出被和谐了) (1)编程思路1. 对三位数n(n为100~999之间的整数)进行穷举.对每个枚举的n,分解出其百位a(a=n/100).十位b(b=n/10%10)和个位c( c=n%10),若满足a*a*a+

C语言 &#183; 4-3水仙花数

问题描述 打印所有100至999之间的水仙花数.所谓水仙花数是指满足其各位数字立方和为该数字本身的整数,例如 153=1^3+5^3+3^3. 样例输入 一个满足题目要求的输入范例.例:无 样例输出 153xxxxxx 代码如下: 1 #include<stdio.h> 2 int main(){ 3 int a,b,c; 4 for(int i=100; i<1000; i++){ 5 a = i / 100 % 10; 6 b = i / 10 % 10; 7 c = i / 1 %

c语言——水仙花数问题

2017-04-1518:32:37 问题描述:打印所有的"水仙花数" .所谓"水仙花数"是指一个三位数,其各位数字的立方和等于该数本身. 例如:153是"水仙花数".因为153=13+33+53. 2.[算法思想] 首先,确定水仙花数n可能存在的范围,因为n是一个三位数,所以范围确定为 n 从 100 变化到 999. 其次,分离出 n 的百位 i.十位 j.个位 k 后,只要判断 n 是否等于i*i*i+j*j*j+k*k*k 即可知道 n

C语言练习008:水仙花数

打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数 本身.例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方:计算100-1000满足条件的数字 #include <stdio.h> int main() { int i,x,y,z; for(i=100;i<1000;i++) { x=i%10; y=i/10%10; z=i/100%10; if(i==(x*x*x+

c语言:3种方法;求出0~999之间的所有“水仙花数”并输出。

方法一: #include <stdio.h> int main() { int i,j,k,n; printf("水仙花数:",n); for(n=100;n<1000;n++) { i=n/100; j=n/10-i*10; k=n%10; if(n==i*i*i+j*j*j+k*k*k) printf("%d\n ",n); } return 0; } 输出结果: 水仙花数:153 370 371 407 Press any key to c