今天看到一个题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。题目中给出了解题的分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
(3)如果n不能被k整除,则用k 1作为k的值,重复执行第一步。
例题中给出了C程序的源程序,不过我想用递归进行操作。经过调试终于调试通过了代码如下:
#include <stdio.h>
void fenjie_zhiyinshu(int); int main(int argc,int *argv[]) { int number; printf("please input a numer:"); scanf("%d",&number); fenjie_zhiyinshu(number); system("pause"); return 0; }
void fenjie_zhiyinshu(int number) { int i,j,k; for (i = 2; i <= number; i++) { if (number % i == 0) { j = number / i; if (j == 1) { printf("%d",i); return ; } else { printf("%d * ",i); fenjie_zhiyinshu(j); break; } } } }
|
阅读(11095) | 评论(0) | 转发(0) |