XTU OJ 质因数分解

该篇博客探讨了如何对正整数进行质因数分解,并提供了C++代码实现。通过不断尝试除以最小的质数并计算指数,直到得到1,可以得出正整数的质因数分解。博客内容涉及基础数学和算法设计,适合初学者理解质因数分解的原理和编程实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Description

任意一个正整数可以分解成唯一的质因数的乘积,给出正整数,请计算出它的质因数分解式。

输入

每行一个正整数2<=n<=10^8。

输出

每行输出一个对应结果。使用”^”表示幂,”*”表示乘,质因子应该按从小到大的顺序输出,如果某一个质因子只有一次,那么就不要输出它的幂。

Sample Input

2

6

36

Sample Output

2

2*3

2^2*3^2

思路分析:这道题应该抓住第一个质因数一定小于第二个质因数,所以,我们应该先试除以第一个质因数,如果能除尽,然后就继续除,统计除了多少个第一个质因数,然后一旦除不尽了,就试着找第二个质因数,再次统计,如果为1就代表除完了

#include <stdio.h>
#include <iostream>
using namespace::std;
int main()
{
	//分解质因数且求其指数无非就是记录求了我们除了多少个质数1,然后对其剩下的数,再除质数2,除了多少个质数2,这样这几个个数就是我们的指数
	int n;
	while (scanf("%d", &n)!=EOF) {
		int i, j;
		//思路分析。首先,分解质因数针对的是合数,只有能被整除的数才可分解质因数,因此我们首先目的就是看下这个数是否能被整除
		for (i = 2; i * i <= n; i++) {
			if (n % i == 0) {//关于每个指数的位置,不难发现,对于24来说,2的三次方*3才是24,也就是说,一般就先考虑最小的那个位置的质数
				for (j = 0; n % i == 0; j++) {//j就是我们的指数,除了3个2之后,2除尽了
					n /= i;
				}//注意计算机不能一下子就拆分出两个质数,只能一个一个的来拆分,先搞定左边质数以及指数,再搞定右边质数以及指数
				//里面的for循环完成后,就代表一个质数以及指数完成了!对剩下的数再进行下一个质数以及指数的运算
				if (j < 2)
				{
					printf("%d", i);
				}
				else printf("%d^%d", i, j);
				if (n != 1)printf("*");
				if (n == 1)printf("\n");
			}
		
		}
		if(n!=1)
		printf("%d\n", n);
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值