本题分解质因数,输入一个数x,可以for循环从2开始枚举
for (int i = 2; i <= x / i; i ++ ), 为什么要循环到x / i呢,这是因为,如果x能被i的倍数所除,那么x也一定可以被i所除,通过前面的i便可以分解掉,例如8/4=0,(8 = 2*2 + 4 * 1),此处i为2,既然8能除4,4也有因数,并且求的是质因数,4能除2,4则不是质数,通过x/i的方法就不会枚举到4 ,所以(8 = 2 , 3),(底数2,指数3)
C++ 代码
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int n;
void f(int x)
{
for (int i = 2; i <= x / i; i ++ )
{
if (x % i == 0)
{
int cnt = 0;
while (x % i == 0)
{
x /= i;
cnt ++;
}
cout << i << ' ' << cnt << endl;
}
}
if (x > 1) cout << x << ' ' << 1 << endl;
}
int main()
{
cin >> n;
while (n -- )
{
int x;
cin >> x;
f(x);
cout << endl;
}
}