码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-07-13 06:37:18      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:c语言   质因数   

//矩阵基础
/*
==================================================================

题目:输入一个正整数,将其分解为质因式,如: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的质因数!直到找不到则循环结束,然后按格式输出就好!

=====================================================================
*/

版权声明:本文为博主原创文章,未经博主允许不得转载。

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

标签:c语言   质因数   

原文地址:http://blog.csdn.net/lzx19901012/article/details/46855633

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!