C语言:质因数分解
- 手机
- 2025-09-16 10:51:02

题目:
已知正整数 n 是两个不同的质数的乘积,试求出较大的那个质数。
分析:本题有三个小点需要注意:
1.找出因子。
2.判断因子是否为质数。
3.比较因子大小。
故,采用模块化思想,分开实现,即采用函数单独判断。
代码: #include<stdio.h> //判断是否为质数,是则返回1,否则返回0 int is_prime(int x){ if(x<2) return 0; //小于2的数不是质数 for(int i=2;i*i<x;i++) if(x%i == 0) //能被整除的数不是质数 return 0; return 1; } //找较大的质因子,能找到则返回较大的质数,找不到则返回-1 int find_larger_prime(int n){ for(int i=2;i*i<=n;i++){ if(n%i==0){ int p=i; int q=n/p; if(is_prime(q)) return p>q?p:q; } } return -1; } int main(){ int n; scanf("%d",&n); int larger_prime = find_larger_prime(n); if (larger_prime != -1) { printf("%d\n", larger_prime); } else { printf("not fond\n"); } getchar(); getchar(); return 0; } 测试: 样例输入 21 样例输出 7