c語言判斷素數(質數)
阿新 • • 發佈:2020-12-21
一、輸入一個正整數並判斷它是否為素數
1.素數是指大於1且只能被1和它本身整除的正整數,2是最小素數,素數有無窮個;
2.如果整數x大於2,那麼就判斷x對2~(x-1)取餘是否為0,如果是,肯定不是素數,如果都不是,則為素數;
3.程式碼及執行結果如下:
#include<stdio.h> int main() { int i,x; scanf("%d",&x); if(x==2) puts("yes!"); if(x>2) { for(i=2;i<x;i++) if(x%i==0) { puts("no!"); break;//一旦判斷不是,跳出迴圈 } if(i==x) puts("yes!");//如果是的話,for迴圈一定執行到了i=x } else puts("no!"); }
二、求m位整數中的最大素數n並輸出,其中m、n均為正整數。(如3位整數指的是100~999之間的數)
1、首先要知道m位整數的區間如何計算,找規律:1位整數最小值是10^0,2位最小值是10^1,3位最小值是10^2...由此可見需要用到冪函式。庫函式<math.h>中有冪函式pow(),用法是pow(x,i),表示x的i次方。
2、程式碼及執行結果如下:
#include<stdio.h> #include<math.h> int main() { int m,n,i,j; int a=0,b=0,c=0; scanf("%d",&m); a=pow(10,m)-1;//m位整數中的最大整數 b=pow(10,m-1);//m位整數中的最小整數 c=pow(10,m);//m+1位整數中的最小整數 for(i=a;i>b&&i<c;i--)//從大至小依次判斷是否為素數 { for(j=2;j<i;j++) if(i%j==0) break;//for和if語句後面沒有{}或;時,緊鄰的一句為內嵌語句 if(j==i) { n=i; printf("%d\n",n); break; } } return 0; }