1137 算法提高 质因数
描述
将一个正整数N(1<N<32768)分解质因数。例如,输入90,打印出90=233*5。 输入 输入描述:
输入样例:
66 输出
输出描述:
输出样例:
66=2311
看着感觉是蛮简单的一道题,但是要设计的精妙也不容易。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于(小于的时候,继续执行循环)n,则说明分解质因数的过程已经结束,另外 打印出即可。
(2)但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n. 重复执行第二步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
eg:90=2×45; 45=3×15; 15=3×5;
#include<stdio.h>
int main()
{
int num;
int i;//i是每次的被除数,num是要被分解的数。
printf("please input a num:");
scanf("%d",&num);
printf("%d=",num);
for(i=2; i<=num; i++)//i从2开始
while(num%i==0)//能够被整除