123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- #include <stdio.h>
- #include <math.h>
- // 函数:判断一个数是否为素数
- int is_prime(int num) {
- if (num <= 1) return 0; // 0和1不是素数
- if (num == 2) return 1; // 2是素数
- if (num % 2 == 0) return 0; // 偶数不是素数
-
- // 试除法判断是否为素数
- int i;
- for (i = 3; i <= sqrt(num); i += 2) {
- if (num % i == 0) {
- return 0; // 能整除则不是素数
- }
- }
- return 1; // 不能整除则是素数
- }
- // 函数:分解合数,找出只出现一次的素数因子
- void decompose(int num) {
- if (num <= 1) return; // 小于等于1的数没有素数因子
-
- int i;
- // 试除法分解合数
- for (i = 2; i <= num; i++) {
- if (num % i == 0 && is_prime(i)) {
- int count = 0;
- while (num % i == 0) {
- num /= i;
- count++;
- }
- if (count == 1) {
- printf("%d ", i); // 输出只出现一次的素数因子
- }
- }
- }
-
- printf("\n");
- }
- int main() {
- int num;
-
- scanf("%d", &num);
-
- // 分解合数并输出只出现一次的素数因子
- decompose(num);
-
- return 0;
- }
|