质因数分解(蓝桥杯)
机械类萌新第一次发稿,最近在刷蓝桥杯的练习题。
题目
问题描述
求出区间[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=2*2*2
9=3*3
10=2*5
代码
#include <stdio.h>
int main()
{
int fun1(int m);
int fun2(int n);
int a,b,t = 1,u = 1,i;
scanf("%d%d",&a,&b);
for(i=a;i<=b;i++)
{
if(fun1(i) == 0)
printf("%d=%d\n",i,i);
u = i;
t = 1;
if(fun1(i) == 1)
{
printf("%d=",i);
while(1)
{
t = t * fun2(u);
printf("%d",fun2(u));
if(t != i)
printf("*");
else
break;
u = u / fun2(u);
}
printf("\n");
}
}
return 0;
}
//判断一个数是否为素数
int fun1(int m)
{
int i,flag = 0;
for(i=2;i<m;i++)
{
if(m == 2)
return 0;
if(m % i == 0)
{
flag = 1;
break;
}
}
return flag; //flag=0时m为质数
}
//分解出一个数的质因数
int fun2(int n)
{
int i;
for(i=2;i<=n;i++)
{
if(n % i == 0)
if(fun1(i) == 0)
return i;
}
}
主要思路是先判断是否是质数,如果是质数则直接输出其本身,如果不是质数则依次求出这个质数的每一个质因子。
水平实在有限,代码有点复杂,第一次发博客有任何问题请大家批评指正。
来源:CSDN
作者:woshilaijianmode
链接:https://blog.csdn.net/woshilaijianmode/article/details/104112939