素數定義:只能分解成1和本身兩個因數
int n,i;
double s;
scanf
("%d"
,&n)
;
(注意此處的s不能取int型別,否則單步除錯它s的值會與n是偶數時相等容易引起混淆)
假設輸入乙個數36
s = sqrt(36) //s = 6;
for
( i=
2;i<=s;i++)}
if( i>s )
printf
("是素數");
else
printf
("不是素數"
);
很顯然程式第一步就會判定不是素數
因為36%2的值已經是0
我們暫時不看break語句
36%i也就是會i最多取到6這個數字
當i = 6時36%6 == 0;
i≯sprintf不是素數
我們再將36換成37試試看
s = sqrt(37) //計算器得出s≈6.083
可見s是大於6的
這時i可以從2開始取到7
37%1到6都不為0
此時i為6還要++變為7
i > s
則可以printf此數是素數
下列為程式示例:
#include
#include
intmain()
}if( i>s )
else
return0;
}
這裡有很多新手不理解為什麼i回到素數的定義
也就是說n取餘2到n-1中的所有數都不能為0.
如有錯誤,還請各位多加指正!
C語言 判斷素數
1 判斷所輸入的整數是否為素數 除1以外只能被1和它本身整除的自然數 include 包含標準庫的資訊 intmain void 每個程式都從main函式的起點開始執行 printf 是素數 n return0 2 求100 200之間的全部素數 include 包含標準庫的資訊 include 標...
C語言判斷素數(求素數)
素數又稱質數。所謂素數是指除了 1 和它本身以外,不能被任何整數整除的數,例如17就是素數,因為它不能被 2 16 的任一整數整除。思路1 因此判斷乙個整數m是否是素數,只需把 m 被 2 m 1 之間的每乙個整數去除,如果都不能被整除,那麼 m 就是乙個素數。思路2 判斷方法還可以簡化。m 不必被...
判斷素數原理
正整數a,設它的平方根為q 1 如果存在乙個大於1小於q的整數可以整除a,則必然存在乙個大於q小於a的整數可以整除a 2 如果不存在乙個大於1小於q的整數可以整除a,則必然也不存在乙個大於q小於a的整數可以整除a。先證明第1條 設b是乙個大於1小於q的整數,且b可以整除a。按整除的定義存在乙個整數c...