C语言之基本算法34—分解质因数(方法一)

//矩阵基础
/*
==================================================================
题目:输入一个正整数,将其分解为质因式,如:60=2*2*3*5;若本身是质数,则输出
如:307是一个质数!
==================================================================
*/
#include<stdio.h>
void main()
{
int n,m,c,i,k,y[40];
printf("输入一个正整数:");
scanf("%d",&n);
while(n>0)
{
m=n;
c=0;
k=m/2;
for(i=2;i<=k;i++)
{
while(m%i==0)
{
y[c++]=i;
m/=i;
}
}
if(m>1)
y[c++]=m;
if(c==1)
printf("%d 是一个质数\n",n);
else
{
printf("%d=%d",n,y[0]);
for(i=1;i<c;i++)
printf("*%d",y[i]);
printf(".");
}
printf("\n\n继续输入一个正整数:");
scanf("%d",&n);
}
}


/*
====================================================================
评:
这个编法可能比较抽象!比较难理解的地方是m>1,c==1,m%i==0;m>1,则m至少为2,说明
至少有一个质因数(因为2,3,都是质数),所以储存质因子的数组y[]至少含一个元素!即c>=1;
若c==1,则y[]恰好有一个元素,必定是这个数它本身!所以这个数就是素数!m%i==0,说明m
可以被i整除,即i是m的因子,因为是从2开始的,所以必定为质数(读者若不明白,可以在温
习一下质数的性质!);m/i,是将m分解为一个数shu乘以质因数,然后通过for和while循环继续
寻找shu的质因数!直到找不到则循环结束,然后按格式输出就好!
=====================================================================
*/

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值