當前位置:妙知谷 >

母嬰教育 >學習交流 >

判斷一個數是否為素數的c編程

判斷一個數是否為素數的c編程

素數又稱質數。所謂素數是指除了1和它本身以外,不能被任何整數整除的數,例如17就是素數,因為它不能被2~16的任一整數整除。

操作方法

(01)判斷一個整數m是否是素數,只需把m被 2 ~ m-1 之間的每一個整數去除,如果都不能被整除,那麼m就是一個素數。思路1)的代碼:#include <stdio.h>int main(){ int a=0; // 素數的個數 int num=0; // 輸入的整數 printf("輸入一個整數:"); scanf("%d",&num); for(int i=2;i<num;i++){ if(num%i==0){ a++; // 素數個數加1 } } if(a==0){ printf("%d是素數。n", num); }else{ printf("%d不是素數。n", num); } return 0;}

判斷一個數是否為素數的c編程

(02)另外判斷方法還可以簡化。m不必被 2 ~ m-1 之間的每一個整數去除,只需被 2 ~ 之間的每一個整數去除就可以了。如果m不能被 2 ~ 間任一整數整除,m必定是素數。例如判別17是是否為素數,只需使17被2~4之間的每一個整數去除,由於都不能整除,可以判定17是素數。思路2)的代碼:#include <stdio.h>#include <math.h>void main(){ int m; // 輸入的整數 int i; // 循環次數 int k; // m 的平方根 printf("輸入一個整數:"); scanf("%d",&m); // 求平方根,注意sqrt()的參數為 double 類型,這裏要強制轉換m的類型 k=(int)sqrt( (double)m ); for(i=2;i<=k;i++) if(m%i==0) break; // 如果完成所有循環,那麼m為素數 // 注意最後一次循環,會執行i++,此時 i=k+1,所以有i>k if(i>k) printf("%d是素數。n",m); else printf("%d不是素數。n",m); return 0;}

判斷一個數是否為素數的c編程 第2張

(03)因為如果m能被 2 ~ m-1 之間任一整數整除,其二個因子必定有一個小於或等於,另一個大於或等於。例如16能被2,4,8整除,16=2*8,2小於4,8大於4,16=4*4,4=√16,因此只需判定在2~4之間有無因子即可。

(04)第一次運行結果:輸入一個整數:11是素數。

(05)第二次運行結果:輸入一個整數:9797是素數。

(06)第三次運行結果:輸入一個整數:1010不是素數。

判斷一個數是否為素數的c編程 第3張
標籤: 編程 素數
  • 文章版權屬於文章作者所有,轉載請註明 https://miaozhigu.com/jy/jiaoliu/6m2mx4.html