关于蓝桥杯OJ基础训练之分解质因数

关于此题,本人的思路是先将2~n(即输入的数字)存到一个数组中,然后依次循环,一直调用函数;当然,进入函数之后如果遇到的数字是素数的话就直接输出,如果不是的话就依次在前面已经保存的数组里面找相应的质因数;一直循环到n为止。

以下是本人的代码:

#include<stdio.h>
#define M 10000
int B;
int a[M];
int judge(int x){
	int flage = 0 ;
	for(int i = 2 ; i < x ; i ++){
		if(x % i == 0)
		flage++;	
	}   
	if(flage==0)
		return 0;
	else 
		return 1;	
}
void f2(int n){
	int i , j = 1 ;
	for(i = 2 ; i < n ; i ++ ){
		int n = judge(i);
		if(n == 0)
			a[j++] = i;
	}
}
void f(int x ){
	int i = 1 ;
	int x1 = x;

	int n = judge(x1);
	if(n == 0)	
		printf("%d=%d",x1,x1);		
	else{
		printf("%d=",x1);
		for(i = 1 ; i <= x1 ; i ++){ 
			for(;x1 % a[i] == 0;){
				x1 /= a[i]; 
				printf("%d*",a[i]);
			}			
		}
		printf("\b ");
	}
	printf("\n");		
}
int main(){
	int a,b;
	scanf("%d %d",&a,&b);
	if(a > b){
		int temp = a ; 
		a = b ;
		b = temp;
	}
	B = b;
	f2(b);
	for(int i = a ; i <= b ; i ++)
			f(i);	
	return 0;
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值