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