一、 分解因子
题目要求:
任何一个整数N(N ≠ 0)都可以分解成1一些质数(素数)因子的形式,例如N= 150,可分解成1 * 2 * 3 * 5 * 5,N = -150时,可分解成-1 * 2 * 3 * 5 * 5。试编写程序。
二、完整代码
//分解因子,如150 = 1*2*3*5*5
#include <stdio.h>
#include <stdlib.h>
#define MAX 1000
int main()
{
int num, n, a[MAX], j;
j = 0;
printf("请输入一个整数:\n");
int p = scanf("%d", &num);
if(p == 1){
if(num == 0){
printf("0不能再进行分解!\n");
}else if(num > 0){
printf("%d可分解成:\n", num);
for(int i = 2; i <= num; i++){
n = num % i;
if(n == 0){
a[j] = i;
j++;
num = num / i;
if (num == 1) {
break;
}
i = 2;
}
}
printf("1");
for(int i = 0; i < j; i++){
printf(" * %d", a[i]);
}
}else {
printf("%d可分解成:\n", num);
int s = abs(num);
for(int i = 2; i <= s; i++){
n = num % i;
if(n == 0){
a[j] = i;
j++;
num = num / i;
if (num == 1) {
break;
}
i = 2;
}
}
printf("-1");
for(int i = 0; i < j; i++){
printf(" * %d", a[i]);
}
}
}else{
printf("输入有误!\n");
}
return 0;
}
三、测试
输入:
零(不能为0):
正整数:
负整数:
四、总结
无论是什么题目,都要先理清楚它的整个执行过程,再思考怎么用程序来编写,编写过程中也要注意一些细节。
若有更好的方法,欢迎评论留言。