用C語言編寫判斷一個數(shù)是否是素數(shù)的程序
云辰桑
工具/材料
ubuntu,vim,gcc
打開ubuntu并開啟一個終端,輸入命令vim is_prime.c,打開編輯頁面,輸入預處理指令#include<stdio.h>用于在主函數(shù)中調用判斷函數(shù)。然后定義一個函數(shù)int is_prime(int n),即判斷整數(shù)n是否為素數(shù)。
首先,判斷這個數(shù)是否小于2.若是,則直接返回0,即表示它不是一個素數(shù)。
然后定義中間的因數(shù)i,初始值為2。依次使n對i取余數(shù),看n能否整除i,然后令i自增直到i的平方大于n。在這過程中,如果遇到n能整除i,則說明n不是一個素數(shù)。如果循環(huán)能夠直到i的平方大于n才結束,說明n是一個素數(shù)。
接下來,我們使用主函數(shù)進行測試,使用printf("%d : %dn", n, is_prime(n))的格式進行輸出。如果輸出結果為0,說明不為素數(shù);結果為1,說明是一個素數(shù)。
測試的數(shù)據(jù)依次是2,4,9,15, 17, 23, 25。
退出編輯器vim,然后使用gcc編譯并運行它,得到結果。通過結果我們可以看出,預期的結果與我們對于素數(shù)的認知是相同的,說明我們的程序編寫沒有錯誤。以下是所有的源代碼:
#include <stdio.h>
//判斷一個數(shù)是否為素數(shù)的函數(shù)定義
int is_prime(int n)
{
//判斷n是否小于2.若小于則直接返回0
//表示n不是一個素數(shù)
if(n < 2)
return 0;
//定義一個中間變量i,初始化i=2
int i = 2;
//依次判斷每一個不大于根號n的i是否能被n整除
for(i = 2; i * i <= n;i++)
{
//如果能夠整除
if(n % i == 0)
//直接返回0,表示n不是一個素數(shù)
return 0;
}
//如果程序運行到這里,說明i*i大于n
//說明n是一個素數(shù)
return 1;
}
int main()
{
printf("%d : %dn", 2, is_prime(2));
printf("%d : %dn", 4, is_prime(4));
printf("%d : %dn", 9, is_prime(9));
printf("%d : %dn", 15, is_prime(15));
printf("%d : %dn", 17, is_prime(17));
printf("%d : %dn", 23, is_prime(23));
printf("%d : %dn", 25, is_prime(25));
return 0;
}