日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C語言中判斷素數(求素數)的思路與方法實例_C 語言

作者:烏龜蓋瑞 ? 更新時間: 2022-05-13 編程語言

前言

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

思路1):因此判斷一個整數m是否是素數,只需把 m 被 2 ~ m-1 之間的每一個整數去除,如果都不能被整除,那么 m 就是一個素數。

思路2):判斷方法還可以簡化。m 不必被 2 ~ m-1 之間的每一個整數去除,只需被 2 ~ ?之間的每一個整數去除就可以了。如果 m 不能被 2 ~ ?間任一整數整除,m 必定是素數。例如判別 17 是是否為素數,只需使 17 被 2~4 之間的每一個整數去除,由于都不能整除,可以判定 17 是素數。

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

思路1實現:

#include 
int main() {
    int n;
    printf("請輸入一個1-100之間的整數:\n");
    scanf("%d", &n);
 
    int m = 0;
    for (int i = 2; i < n; i++ ) {
        if(n % i  == 0) {
            m++;
        }
    }
    if (m == 0) {
        printf("%d是素數\n", n);
    } else {
        printf("%d不是素數\n", n);
    }
    return 0;
}

思路2實現:

#include 
#include 
int main() {
    int n;
    printf("請輸入一個1-100之間的整數:\n");
    scanf("%d", &n);
 
    int i = 0;
    int q = sqrt(n);
    for (i = 2; i <= q; i++ ) {
        if(n % i  == 0) {
            break;
        }
    }
    if (i > q) {
        printf("%d是素數\n", n);
    } else {
        printf("%d不是素數\n", n);
    }
 
    return 0;
}

《C與指針》4.14 - 2:

打印1~100之間所有質數:

#include 
int main() {
    int num, divisor;
    printf("1, 2");
    for (num = 3; num <= 100; num += 2) {
        for(divisor = 3; divisor < num; divisor +=2 ) {
            if (num % divisor == 0) {
                break;
            }
        }
 
        if(divisor >= num) {
            printf(", %d", num);
        }
    }
    printf("\n");
    return 0;
}

結果:

1, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97

補充:判斷素數的4種方法實例

#include
#include
//方法一:從1-n挨個判斷;
 bool isPrimel_1(int n) 
{	for(int i=2;i

總結

欄目分類
最近更新