给定n个正整数ai ,将每个数分解质因数,并按照质因数从小到大的顺序输出每个质因数的底数和指数。
#include <iostream>
using namespace std;
void divide(int n)
{
for (int i=2; i<=n/i; i++)//n只可能有一个大于根号n的质因数 所以最后单独判断即可
if (n % i == 0) //n经过之前除 1 2 3之类的数后 满足该条件的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); //如果n大于一 那么此时的n为仅有的大于1的质因子
}
int main()
{
int n;
scanf("%d",&n);
while (n--)
{
int x;
scanf("%d",&x);
divide(x);
}
return 0;
}
分解质因数
最新推荐文章于 2024-06-05 15:16:22 发布