算法提高 分解质因数

问题描述
  给定一个正整数n,尝试对其分解质因数
输入格式
  仅一行,一个正整数,表示待分解的质因数
输出格式
  仅一行,从小到大依次输出其质因数,相邻的数用空格隔开
样例输入
100
样例输出
2 2 5 5
数据规模和约定
  n<=2147483647

思路:

  1. n=1时,质因数为1.
  2. n>1时,一次判断i(2~sqrt(n))是否能除尽,能则打印i并重置i=1,反之继续往后判断。
  3. 当n不能被除时,n就是最后的质因数。
#include<stdio.h>
#include<math.h>
int main(){
    
    
	
	int n,i;
	scanf("%d",&n);
	//当n=1时 
	if(n==1){
    
    
		printf("%d\n",n);
	}else{
    
    //当n>1时 
		for(i=2;i<=sqrt(n);i++){
    
    
			if(n%i==0){
    
    //当i能除尽时,打印i,重新初始n,重新赋值i=1. 
				printf("%d ",i);
				n/=i;
				i=1;
			}
		}
		if(n){
    
    //当n不能被除时,n就是最后的质因数 
			printf("%d\n",n);
		}
	}
	return 0;
} 

结果:

100
2 2 5 5

--------------------------------
Process exited after 2.25 seconds with return value 0
请按任意键继续. . .

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/mjh1667002013/article/details/115219600