天天看點

C語言求100~200之間的素數

① 要判斷一個數是不是素數,首先要知道什麼是素數。回憶一下數學裡的知識,什麼是素數?隻能被自身和1整除的正整數是素數。1既不是素數,也不是合數;2是最小的素數,也是唯一一個是偶數的素數。

② 判斷一個正整數m是否為素數有多種方法。

方法1:讓m依次被2,3,…,m-1除,如果m不能被2~m-1中的任何一個整數整除,則m是素數。

方法2:讓m依次被2,3,…,m/2除,如果m不能被2~m/2中的任何一個整數整除,則m是素數。

方法3:讓m依次被2,3,…,sqrt(m)除,如果m不能被2~sqrt(m)中的任意一個整數整除,則m為素數。sqrt(m)為m的平方根。

其中最後一種方法判斷速度最快,是以這裡采用最後一種方法。

③ 判斷一個整數是不是素數,由于需要一次一次地做除法,是以要使用循環。

偶數都為2 的倍數,是以均不為素數,這樣我們就可以排除掉偶數,直接判斷奇數是不是素數

#include<stdio.h>
#include<math.h>

int main( ) 

    { 
		int m,i,k=0; 
		
	     for(m=101; m<=200; m+=2) //如果用了簡便的 m+=2,就需要 m從101開始,否則找出來的全是偶數 
	     { 
		 	 k=sqrt(m); 
		 	 
			     for (i=2;i<=k;i++) 
				 {
			     	if (m%i==0) break; 
				 }
			     if (i>k) 
			     {
					 printf("%d ",m); 
			     } 
	     } 
    } 
           

運作結果為:

C語言求100~200之間的素數

note : i>k證明上面那個for循環跑到底了,for循環跑到底還沒break說明m是一個素數。