VIP试题 基础练习 分解质因数(C语言)

资源限制

时间限制:1.0s   内存限制:512.0MB

问题描述

  求出区间[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<bits/stdc++.h>
using namespace std;
int pan(int n)
{
	int i,f=0;
	int k=(int)sqrt(n);
	for(i=2;i<=k;i++)
	{
		if(n%i==0)
		{
			f=1;
			break;
			
		 } 
		
	}
	if(f==1||n==1)
	return 0;
	else
	return 1;//是素数 
	
}
int main()
{
	int n,m,i,j;
	scanf("%d%d",&n,&m);
	
	for(i=n;i<=m;i++)
	{
		if(pan(i)==1)
		{
			printf("%d=%d\n",i,i);
		}
		else
		{
			int k=i;
			j=2;
			
			printf("%d=",k);
			while(k!=j)//结束的条件 
			{
				for(j=2;j<k;j++)
				{
					if(k%j==0&&k!=j)
					{
						printf("%d*",j);
						k=k/j;
						break;
					}
				}
			}
			printf("%d\n",k);
		}
	}
	return 0;
 } 

猜你喜欢

转载自blog.csdn.net/with_wine/article/details/115035274