int main()
{
int i, j, a[999999], x, y
scanf("%d", &x) //读取
y = x
for(i = 2, j = 0 i <= x i++) //遍历质因数
{
if(x % i == 0) //如果读取的数能够被质因数整除
{
a[j] = i //将符合条件的质因数存到数组中
j++ //数组下标递增
x /= i //重新赋值
i = 2 //重新遍历
}
}
printf("%d=%d", y, a[0]) //输出原数、等号、第一个质因数
for(i = 1 i < j i++)
printf("×%d", a[i]) //如果存在第二个质因数,则继续输出
return 0
}
求出区间[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
蓝桥杯
#include<stdio.h>
#include<math.h>
int factor(int n)
{
int i,j=(int)sqrt(n)
if(n%2==0) return 2
for(i=3i<=ji++)
if(n%i==0) return i
return n
}
int main()
{
int i, j, k, m, n
scanf("%d%d", &m, &n)
for(i=mi<=ni++)
{
j=factor(i)
k=i/j
printf("%d=%d",i,j)
while(k>1)
{
j=factor(k)
k=k/j
printf("*%d", j)
}
printf("\n")
}
return 0
}
分解质因数牛逼方法