分解质因数
问题描述
求出区间[a,b]中所有整数的质因数分解。
输入格式
输入两个整数a,b。
输出格式
每行输出一个数的分解,形如k=a1*a2*a3...(a1<=a2<=a3...,k也是从小到大的)(具体可看样例)
样例输入
3 10
样例输出
3=3
4=2*2
5=5
6=2*3
7=7
8=2*2*2
9=3*3
10=2*5
提示
先筛出所有素数,然后再分解。
数据规模和约定
2<=a<=b<=10000
问题分析:
注意因数的输出形式,从小开始,所以有一个递增的循环用于做除法,无因数的就输出它本身就好
代码展示(已验证):
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[])
{
int a,b,n,i,j;
scanf("%d %d",&a,&b); // 范围输入
for(i=a;i<=b;i++) // 不进行 素数挑选 直接 根据判定条件输出
{
printf("%d=",i);
n=i;
j=2;
while(n!=j) // 一直除到最后一个 也就是n==j
{
for(j=2;j<n;j++) // j 在 不满足 if 条件时 开始 j++
{
if(n%j==0 && n!=j) // 从小开始除 j=2
{
printf("%d*",j);
n/=j;
break;
}
}
}
printf("%d\n",n); // 输出最后一个 因数 可是它本身
}
return 0;
}
泡泡:
嗯,难度不大,按部就班,注意输出形式。