Prime factorization of a number【1月19日学习笔记】

点击查看代码
//Prime factorization of a number
#include<iostream>
#include<cmath>
using namespace std;

void primefactorization(int n) {
	for (int i = 2; i <= sqrt(n); i++) {//质因数(除去本身)最多只有一个在根号n右侧
		if (n % i == 0) {//i从2开始,短除法
			int count = 0;
			while (n % i == 0) {//连续除以i至不能整除
				n = n / i;
				count++;//记录指数
			}
			cout << i << "^" << count << " ";
		}
	}
	if (n != 1)  cout << n << "^" << 1;//最终的商,1或质因数(因为上面只循环到了根号n,所以会出现商为质因数的情况)
                                       //且最终的商不可能是合数,因为最终的商必定不含根号n左侧的质因子,且根号n右侧最多只有一个质因子构不成合数
	cout << endl;
}//时间复杂度:O(sqrt(n))

int main() {
	int n;
	cin >> n;
	primefactorization(n);
}

posted @   bituion  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示