题意:
有一条由 nn 块瓷砖拼成的长度为 nn 的路。
对于两块瓷砖 ,如果
且
,那么它们的颜色必须相同。
求出最多可以使用多少不同颜色的瓷砖,并且满足上述要求。
满足,也就是说
是
的因数,那么我们对
的因素分析,对因素分析其实就是对质因数分析
如果,那么答案明显为k
如果,如果
和
不是质因数,那么可以把
和
拆成质因数,当
和
互质的时候,根据中国剩余定理,存在
在
,使得
,
,其中
和
为任意数,也就是说
和
与
同色,以此推得,当
有两个质因子时所有颜色都相同,当有两个以上时可以拆成多个两个质因子,情况相同
#include<iostream>
#include<cmath>
using namespace std;
long long n,cnt,res[3];
int main()
{
cin>>n;
for(long long i=2;i<=n/i;i++)
{
if(n%i==0)
{
res[++cnt]=i;
while(n%i==0) n/=i;
}
if(cnt==2) break;
}
if(n>1) res[++cnt]=n;
if(cnt==1) cout<<res[cnt];
else cout<<1;
}