什么是分解质因数:
题目描述:
输入样例:
2 6 8
输出样例:
2 1 3 1 2 3
思路:
为什么只需要枚举到根号N
为什么n % i == 0就是质数
因为在枚举到i之前已经把n中2到i-1的质因子除干净了,此时n中不含2到i-1的质因子,由于n为i的倍数,所以i中也不包含2到i-1的质因子。如果i可以整除前面的i - 1中的数那么i = x * (i - 1),n = x2 * (x * (i - 1));
矛盾了
代码:
#include <iostream> using namespace std; void divide(int n) { for (int i = 2; i <= n / i; i++) { if (n % i == 0) { int s = 0; while (n % i == 0) { n /= i; s++; } cout << i << " " << s << endl; } } //单独处理大于根号N的质因数 if (n > 1) cout << n << " " << 1 << endl; cout << endl; } int main() { int n; cin >> n; while (n--) { int x; cin >> x; divide(x); } return 0; }