分解质因数
Description
求出区间[a,b]中所有整数的质因数分解。
Input
输入两个整数a,b。
Output
每行输出一个数的分解,形如k=a1a2a3...(a1<=a2<=a3...,k也是从小到大的)(具体可看样例)
Sample Input 1
3 10
Sample Output 1
3=3 4=2*2 5=5 6=2*3 7=7 8=2*2*2 9=3*3 10=2*5
Hint
提示
先筛出所有素数,然后再分解。
数据规模和约定
2<=a<=b<=10000
Solution
其实就是展示判断质因数过程,判断该数能否被从2开始到该数的平方根整除,如果能被某数整除,这个数更新为除以某数之后的结果,同时需要判断能不能再一次被该数整除,如果不能就将某数加一。同时由于某数只自增到平方根,有可能存在因数大于平方则无法输出,还有可能本身就是质数。
#include<stdio.h>
#include<cmath>
int main() {
int a, b;
int i,j,m;
scanf("%d%d", &a, &b);
for (i = a; i <= b; i++) {
printf("%d=", i);
m = i;
for (j = 2; j <= sqrt(i); ) {
if (m % j == 0) {
m = m / j;
if (m > 1) {
printf("%d*", j); continue;
}
if(m==1){
printf("%d", j);
}
}
j++;
}
if (m < i && m>1) {
printf("%d", m);
}
if (m == i) {
printf("%d", i);
}
printf("\n");
}
return 0;
}
浙公网安备 33010602011771号