试题 基础练习 分解质因数
资源限制
时间限制:1.0s 内存限制:512.0MB
问题描述
求出区间[a,b]中所有整数的质因数分解。
输入格式
输入两个整数a,b。
输出格式
每行输出一个数的分解,形如k=a1a2a3…(a1<=a2<=a3…,k也是从小到大的)(具体可看样例)
样例输入
3 10
样例输出
3=3
4=2*2
5=5
6=2*3
7=7
8=222
9=3*3
10=2*5
提示
先筛出所有素数,然后再分解。
数据规模和约定
2<=a<=b<=10000
題解:首先要考虑一个数有没有因数,我们这里调用is_prime函数来判断它是不是素数,如果是,返回1;否则返回0;代码中if(j) printf("%d=%d",i,i);意思是这儿j=1,证明它是素数,没有质因数(例如7=7、5=5)其他的自己先理解理解.
#include<stdio.h>
int is_prime(int n)
{
int i;
for(i=2;i*i<=n;i++)
if(n%i==0)return 0;
return 1;
}
int main(){
int a,b;
int i,j,k,m;
scanf("%d %d",&a,&b);
if(a>=2&&a<=b&&b<=10000){
for(i=a;i<=b;i++){
j=is_prime(i);
m=i;
k=2;
if(j) printf("%d=%d",i,i);
else{
printf("%d=",i);
while(k!=m){
if(m>k&&m%k==0){
printf("%d*",k);
m=m/k;
}
else k++;
}
printf("%d",k);
}
printf("\n");
}
}
return 0;
}