hello hello 我来了!今天就讲的是,C语言的一道经典题 “将一个正整数分解质因数”。例如:输入90,打印出90=2 *3 * 3 *5。
一、分析过程:
1、首先要理解质数的概念。
质数/素数:质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数
2、分解的思路:
从最小的的数开始,不断地用正整数(输入的数)去对它(最小的数)求余,若余数为0,就说明是这个正整数的一个质因子,到这里可能有部分小同志就会想,那我用一个循环不断去取余不就行了嘛!
是的没错!但有一个小细节很容易被忽略,就是质因数有没有可能重复呢!就如我上面那个例子:90=2*3*3*5 因此,我们还需引入一个循环,废话不多说了,我们边见代码,边想!
二、代码讲解:
具体的内容都在注释里了(代码在最下面,可复制)
最后num里不能被整除的是最后一个质因数!
三、运行结果:
四、完整代码(可复制)如下:
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() { //将正整数分解质因数 例如:90 = 2 * 3 * 3 *5 int num; printf("请输入一个正整数:\n"); scanf_s("%d", &num); printf("%d = ", num);//输出 90= for (int i = 2; i < num; i++)//(质数/素数)在除1和除它自身的范围内 查找 { while (i != num) { if (num % i == 0) { printf("%d * ", i); num = num / i;//num的值改变 } else break;//说明此时的 i不能被整除了,就可以跳出循环了,进行下一个数的判断 } } printf("%d", num); } | ||
以上就是今天的全部内容了!