前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分解质因数

分解质因数

作者头像
lop
发布2019-03-13 17:00:59
8310
发布2019-03-13 17:00:59
举报
文章被收录于专栏:小六小六

问题描述

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

思路:先用函数求出10000以内的质数,存到数组里。然后用双层循环,外层控制[a,b]范围,内层有三个,第一个循环作用是直接输出[a,b]范围内的质数,第二个循环的作用是对非质数的数进行一个判断处理,判断思路:对要分解的数进行除法操作,然后在用if语句判断是否可以整除,如果可以整除,我们将存到数组里(输出格式需要,我也不知道怎么处理这种输出格式,只能用这种笨方法)。假设这个数字第一次可以被(为了方便理解,我用2代替一下)2整除,那么第二次它也同样可能2整除,所以我们要将第二个循环从新由2的下标开始循环。这里我是用if加上0和1的方式判断条件,当然整篇代码都用了不少这样的例子。第三个循环是对第二个循环求出的值按照题目给出的标准的输出格式输出。(小白还请多多关照)

代码语言:javascript
复制
代码语言:javascript
复制
#include <stdio.h>
#include <windows.h>

int fun22(int * a)
{
	int i, j, m = 0, true_ = 0;
	
	for(i = 2; i < 10000; i++)
	{
		true_ = 0;
		for(j = 2; j < i / 2 + 1; j++)
		{
			if(i % j == 0)
				true_ = 1;	
		}
		if(!true_)
			a[m++] = i;	
	}
	return m;
}

void fun21(void)
{
	int n, m, x, y;
	int i, j, true_;
	int a[5000], k, b[10000], kk = 0;
	
	scanf("%d%d", &n, &m);
	k = fun22(a);
	for(n ; n <= m; n++)
	{
		j = n;	true_ = 0;
		for(i = 0; i < k; i++)
		{
			if(n == a[i])
			{
				printf("%d=%d\n", n, n);
				true_ = 1;
				break;
			}		
		}
		if(true_)
			continue;
		memset(b, 0, sizeof(b));
		kk = 0; i = 0;
		while (i < k)
		{
			x = j / a[i];
			true_ = 0;
			if(j == a[i] * x)
			{
				j = x;
				
				b[kk++] = a[i];
				y = j / a[i]; 	
				if(j != 0 && j == y * a[i])
					true_ = 1;			
			}
			if(j == 0 || a[i] > n)
				break; 
			if(true_)
				i = 0;
			else
				i++; 
		}
		printf("%d=", n);
		for(i = 0; i < kk; i++)
		{
			if(i == kk - 1)
				printf("%d", b[i]);
			else 
				printf("%d*", b[i]);
代码语言:javascript
复制
                        //printf("%d%c", b[i], n == kk - 1 ? '*': '');
		}
		if(n < m)
			printf("\n");
	}
}

int main()
{	
	system("color 0a");	
	fun21();
	return 0;
}
代码语言:javascript
复制
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年01月31日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档