5 质因子分解2

 

#include <stdio.h>   
#include<math.h>
int ipow(int,int);
int isprime(int);
int main()  {
    int n,i,j,k,cnt=0;
    scanf("%d",&n);
    j=n;
    printf("%d=",j);
    for(i=2;i<=j;i++){
    	if(isprime(i)){
    		cnt=0;
    		while(n%i==0&&n!=1){
    			n/=i;cnt++;
			}
    			if(cnt>1){
    				k=ipow(i,cnt);
    				if(n==j/k)printf("%d^%d",i,cnt);
    				else printf("*%d^%d",i,cnt);
				}
    			else if(cnt==1) {
	    				if(n!=j/i)printf("*%d",i);
	    				else printf("%d",i);
    			                 }
		}
	}
	printf("\n");
    return 0;
}
int ipow(int a,int b){
	int o,p=a;
	for(o=0;o<b-1;o++)a*=p;2
	return a;
}
int isprime(int n){
	int i,w=1;
	for(i=2;i<=sqrt(n);i++){
		if(n%i==0)w=0;break;
	}
	return (w=0?0:1);
}

注意:

1 pow 库函数里为double类型,不要直接运算;算乘方的时候,是自己相乘n-1次,别写成a*=a。

2 换行符放最后的最后,不用在讨论里讨论这个数是不是最后一个。只需要讨论这个数或这一组数是不是第一个。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值