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