当前位置: 代码迷 >> 综合 >> ZZULIOJ 1071: 分解质因子
  详细解决方案

ZZULIOJ 1071: 分解质因子

热度:25   发布时间:2024-01-25 06:34:40.0

题目描述

将一个正整数分解质因数,例如,输入90,输出2 3 3 5。

输入

输入一个正整数n(2<=n<=2000)。

输出

从小到大输出n的所有质因子,每两个数之间空一格。

样例输入

20

样例输出

2 2 5

提示

注意,最后一个数后面没有空格!!

 

tips:质因数是指因数是质数,正整数的因式分解可以将正整数表示为一连串的质因子  ,任何正整数都有独一无二的质因子分解式

 

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int isPrime(int num){  //判断是否是质数int i;for ( i = 2; i < num; i++){if (num%i == 0)break;}if (i==num){return 1;}else{return 0;}
}
int main(){int num, i,flag;scanf("%d",&num);while (num>1)  //   20/2/2/5=1,当输入的数变为1已经输出全部质因子{for (i = 2; i < num+1; i++){if (isPrime(i)&&!(num%i)) //质数并且是因数{flag = i;break;}}num /= i;if (num==1){printf("%d",flag);  //通过使用num是否为1判断是不是最后一个质因子}else{printf("%d ",flag);}}
}

 

  相关解决方案