质因数分解(蓝桥杯)

和自甴很熟 提交于 2020-01-31 04:03:16

质因数分解(蓝桥杯)

  机械类萌新第一次发稿,最近在刷蓝桥杯的练习题。

题目

问题描述

  求出区间[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;
	}
}

  主要思路是先判断是否是质数,如果是质数则直接输出其本身,如果不是质数则依次求出这个质数的每一个质因子。

水平实在有限,代码有点复杂,第一次发博客有任何问题请大家批评指正。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!