在C語言中,分解質因數的程序可以通過一個簡單的算法實現。以下是一個示例程序,它接受一個整數作為輸入,并輸出其所有質因數:
#include <stdio.h>
#include <stdbool.h>
// 函數聲明
void primeFactors(int n);
bool isPrime(int num);
int main() {
int number;
printf("請輸入一個整數: ");
scanf("%d", &number);
printf("質因數分解結果: ");
primeFactors(number);
return 0;
}
// 分解質因數的函數
void primeFactors(int n) {
for (int i = 2; i <= n; i++) {
// 如果i是n的因數,并且i是質數
if (n % i == 0 && isPrime(i)) {
printf("%d ", i);
n /= i; // 更新n的值
}
}
}
// 判斷一個數是否為質數的函數
bool isPrime(int num) {
if (num <= 1) {
return false;
}
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
這個程序首先定義了一個primeFactors
函數,它接受一個整數n
作為參數,并輸出其所有質因數。在這個函數中,我們使用一個循環從2開始遍歷到n
,并檢查每個數是否是n
的因數以及是否是質數。如果是,我們就輸出這個數,并更新n
的值。
我們還定義了一個輔助函數isPrime
,用于判斷一個數是否為質數。這個函數接受一個整數num
作為參數,并返回一個布爾值,表示num
是否為質數。在這個函數中,我們首先檢查num
是否小于等于1,如果是,則返回false
。然后,我們使用一個循環從2開始遍歷到sqrt(num)
,并檢查每個數是否是num
的因數。如果是,則返回false
。如果循環結束后沒有找到任何因數,則返回true
。
在main
函數中,我們從用戶那里獲取一個整數,并調用primeFactors
函數來分解其質因數。然后,我們輸出分解結果。