质数判定
// 试除法
bool is_prime(int n)
{
if(n<2) return false;
for(int i=2;i<n;i++)
if(n%i==0)
return false;
return true;
}
// 优化后
bool is_prime(int n)
{
if(n<2) return false;
for(int i=2;i<=n/i;i++)
{
if(n%i==0)
return false;
}
return true;
}
分解质因数
void divide(int n)
{
for(int i=2;i<=n/i;i++)
{
if(n % i == 0) // i一定是质数
{
int s = 0;
while(n%i==0)
{
n/=i;
s++;
}
printf("%d %d\n", i, s);
}
}
if(n>1) printf("%d %d\n",n,1);
puts("");
}