XDOJ-249 分解质因数

分解质因数

题目描述:
每个非素数(合数)都可以写成几个素数(也可称为质数)相乘的形式,
这几个素数就都叫做这个合数的质因数。编写程序将一个正整数分解质因数

输入描述:
输入一个正整数n(2<n<1000)

输出描述:
形如a*b*b*c,质因数按照从小到大的顺序排列

输入样例:
90

输出样例:
2*3*3*5
//输入正整数n
//遍历n以内的所有整数
//找出其质因数
//同时求出其重复的数字
//输出为乘积形式

#include<stdio.h>
int prime(int a){						//用于判断素数的函数
	int i;
	if(a == 2){
		return 2;
	}else{
		for(i = 2; i<a ; i++){
			if(a % i == 0){
				return 0;
			}
		}
		return a;
	}
}

int main(){
	int n,a;
	int d = 1;
	scanf("%d",&n);							//注意2<n<1000 别输入2
	a = n;									//用a记录n的值
	
	for(int i = 2;i<n;i++){					//从小到大输出只能用++ ,不能用--	
		if(prime(i) == i){
					//遍历n以内的所有质数
			for(;;){
				if(a % i == 0){ 			//i为n的质因数	
					printf("%d",i);
					a /= i;					//a等于a/i的结果,用于计算重复质因数;
					d *= i;     			//d记录每个质因数的乘积
					//printf("%d\n",d);
					if(d != n){				//用if语句避免在最后一个质因数后面不输出'*'
						printf("*");
					}				
				}else if(a % i != 0){
					break;					
				}
					
			}	
		}
		if(d == n){
			break;							//及时跳出循环优化运算
		}
	}
	return 0;
}

这是我发布的第一篇博客,希望我同诸位一起成长。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值