1. 程式人生 > 其它 >c語言判斷素數(質數)

c語言判斷素數(質數)

技術標籤:C語言演算法

一、輸入一個正整數並判斷它是否為素數

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;
}