质因数分解

对于给定整数,将其因式分解,并输出质因子个数。2007清华上机题

解一:

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
//素数判断
int isprime(int a){
int i;
for(i=2;i<=sqrt(a);i++){
if(0==a%i) return 0;
}
return 1;
}

int main(){

int num,i;
int count;
scanf("%d",&num);
printf("%d=",num);
if(isprime(num)){
printf("%d*1\n",num);
printf("number is %d\n",count);
}
else{
count=1;
while(num!=1){
for(i=2;i<=num;i++){
if(0==num%i){
count++;
num=num/i;
if(1==count){
printf("%d",i);
break;//break跳出,使for从2开始,可以解决12=2*3的问题是其输出为12=2*2*3
}                                                  
else {
printf("*%d",i);
break;
}
}
}
}
printf("\n");
printf("number is %d",count);
 }
system("pause");
return 0;
}

解二:

#include<stdio.h> 
#include<stdlib.h>
 int  main(){
      int n,x=1;
  int flag=1;
      scanf("%d",&n);
      printf("%d=",n);
      while(n!=1){
          x++;
          while(n%x==0){//此处是关键,循环对从2开始进行整除,当不满足是x++
              n/=x;        
  if(flag){
                 flag=0;
                 printf("%d",x);
             }else{
                 printf("*%d",x);
             }
         }
     }
  printf("\n");
  system("pause");
  return 0;
 }


                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值