hello hello 我来了!今天就讲的是,C语言的一道经典题  “将一个正整数分解质因数”。例如:输入90,打印出90=2 *3 * 3 *5。

 一、分析过程:

1、首先要理解质数的概念。

质数/素数:质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数

2、分解的思路:

     从最小的的数开始,不断地用正整数(输入的数)去对它(最小的数)求余,若余数为0,就说明是这个正整数的一个质因子,到这里可能有部分小同志就会想,那我用一个循环不断去取余不就行了嘛!

   是的没错!但有一个小细节很容易被忽略,就是质因数有没有可能重复呢!就如我上面那个例子:90=2*3*3*5   因此,我们还需引入一个循环,废话不多说了,我们边见代码,边想!

二、代码讲解:

具体的内容都在注释里了(代码在最下面,可复制)

【C语言】正整数分解质因数_正整数分解质因数

最后num里不能被整除的是最后一个质因数!

三、运行结果:

【C语言】正整数分解质因数_分解质因数_02

四、完整代码(可复制)如下:




#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);


}







以上就是今天的全部内容了!