题目描述
求出区间[a,b]中所有整数的质因数分解。
输入格式
输入两个整数a,b。
输出格式
每行输出一个数的分解,形如k=a1a2a3…(a1< =a2< =a3…,k也是从小到大的)(具体可看样例)
做法:
一个个因数枚举,到sqrt(n)
,当这个因数有多个时,一直判断到没有为止。
#include <bits/stdc++.h>
using namespace std;
void Prime_fac(int n) {
bool fir = 1;
cout << n << '=';
for (int i = 2; i <= sqrt(n); i++) {
if (n % i == 0) {
while (n % i == 0) { //因为同个因数可能有好几个,所以一直判断
if (fir == 0) //假如是第一个
cout << '*';
cout << i;
fir = 0;
n /= i;
}
}
}
if (n != 1) { //剩下一个质数
if (fir == 0) //n本身是质数
cout << '*';
cout << n;
}
cout << endl;
}
int main() {
int s, e;
cin >> s >> e;
for (int i = s; i <= e; i++) {
Prime_fac(i);
}
}