ZZULIOJ 1071: 分解质因子

题目描述

将一个正整数分解质因数,例如,输入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);
		}
	}
}
发布了122 篇原创文章 · 获赞 58 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_39112646/article/details/104009758