算法笔记——分解质数(当然是int型的数据)

由于可处理的数据范围极小,而且算法比较暴力。所以仅供参考没有实际意义。

分解大质数还是得靠python。

#include
using namespace std;


struct factor
{
	int x, cnt;
}fac[10];
const int maxn = 10000;//表长
int prime[maxn], pNum = 0;//prime数组存放所有素数,pNum记录素数个数
bool p[maxn] = { false };//散列p,true表示不是素数,反之false为素数
void Find_Prime(int n)
{
	for (int i = 2; i < n+1; i++)//切记是i> n)
	{
		Find_Prime(n);//打印素数表
		for (int i = 0; i < pNum; i++)
		{
			if (n%prime[i] == 0)
			{
				fac[num].x = prime[i];//记录该质因子
				fac[num].cnt = 0;//初始化该质因子个数
				while (n%prime[i] == 0)//计算同个质因子的个数
				{
					fac[num].cnt++;
					n /= prime[i];
				}
				num++;//不同的质因子个数加1
			}
		}
		if (n != 1)
		{
			fac[num].x = n;
			fac[num++].cnt = 1;
		}
		cout << fac[0].x << '^' << fac[0].cnt;
		for (int i = 1; i < num; i++)
		{
			cout << '*' << fac[i].x << '^' << fac[i].cnt;
		}
		cout << endl;
		//初始化
		num = 0;
		pNum = 0;
	}
	system("pause");
	return 0;
}

 

你可能感兴趣的:(算法理论的学习(C++))