【技巧】---质因子分解法

这个方法可以将一个数分成自2开始相乘的若干质数相乘。

int num[1100];
int n;
int counts=0;
for(int i=2;i*i<=n;i++)
if(n%i==0)
while(n%i==0)
{
num[counts++]=i;
n/=i;
}
if(n>1)
num[counts++]=n;	

hdu 5108   Alexandra and Prime Numbers

显然N/M应该是N的最大质因子,这样才能使得M最小。暴力找到最大质因子后用N除就能算出M了。
唯一无解的情况是N=1。
直接用质因子分解的方法,求出最大的质因子即可。

需要特别的是理解好质因子的方法。

参考代码:

#include
using namespace std;
int main()
{
    int n;
    while (cin >> n)
    {
		if(n==1)
		{
			cout<<"0"< 1)
          x=max(x,n);
        cout << mid / x << endl;
    }
}


你可能感兴趣的:(技巧,杂记,方法学习)