欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言中如何判斷質(zhì)數(shù)

 更新時間:2023年03月03日 09:53:44   作者:胖大斯  
這篇文章主要介紹了C語言中的判斷質(zhì)數(shù)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

C語言判斷質(zhì)數(shù)

寫判斷質(zhì)數(shù)的程序時,需特別注意邊界條件:

1.開始邊界條件:2作為第一位質(zhì)數(shù),不參與循環(huán);

2.循環(huán)主體:divisor += divisor % 2 +1代表當(dāng)除數(shù)divisor是奇數(shù)時+2,是偶數(shù)時+1;

3.結(jié)束邊界條件:當(dāng)divisor趨近n時,即divisor=n-1或divisor=n-2,仍然沒有數(shù)能被n整除,那么可以判斷n為質(zhì)數(shù)

#include <stdio.h>
int main() {
    int divisor;
    int n;
    scanf("%d",&n); // 輸入要判斷的數(shù)
    if (n == 2) {
        printf("YES"); 
    } else {
        for (divisor = 2; divisor < n; divisor += (divisor % 2 + 1) ) {
            if (n % divisor == 0) {
                printf("NO"); // 當(dāng)出現(xiàn)能被1或自身之外整除時
                break;
            } else if (divisor == n - 1 || divisor == n-2) {
                printf("YES"); // 循環(huán)到 n-1 或 n-2 時,仍然沒有被其他數(shù)整除
            }
        }
    }
    return 0;
}

C語言判斷素數(shù)的函數(shù)

下列程序?qū)懥艘粋€判別素數(shù)的函數(shù),在主函數(shù)輸入一個整數(shù),輸出是否為素數(shù)的信息。

#include <stdio.h>?
int main()
? ?{
? ? ? int prime(int);
? ? ? int n;
? ? ? printf("請輸入一個整數(shù):");
? ? ? scanf("%d",&n);?? ?
? ? ?if______________________ ? ? ? ? ? ? ? ??
?? ? ? ? printf("%d 是素數(shù)。\n",n);
? ? ?else
?? ? ? ? printf("%d 不是素數(shù)。\n",n);
? ? ?return 0;
? ?}
? int prime(int n)
? {
? ? ?int flag=1,i;
? ? ?for(i=2;i<n/2&&flag==1;i++)
? ? ?if ______________________ ? ? ? ? ? ? ? ? ??
? ? ?flag=0;
? ? ?________________________;
? ? }

經(jīng)分析,以上代碼使用flag的值來判斷輸入的n是否為素數(shù),flag=1,n為素數(shù);flag=0,n不是素數(shù)。完善if條件語句,第一個if, 主函數(shù)中的if調(diào)用函數(shù),需要填入一個參數(shù),即prime(n); 第二個if,是判斷什么情況下flag=0,即輸入的整數(shù)不為素數(shù),即(n/i==0),余數(shù)為0,可以整除;最后返回flag的值,return flag。

但是經(jīng)過運(yùn)行可以知道,n=4的時候,程序判斷4是素數(shù),明顯是錯誤的,n取0和1的時候同理,程序存在漏洞。

分析得知,在定義函數(shù)的過程中,for循環(huán)條件語句,i<=n/2&&flag==1才能正確運(yùn)行,同時添加if語句對0和1判斷。(前提輸入的n>=0,如果為負(fù)整數(shù),另加判斷條件,略)

正確代碼如下

#include <stdio.h> 
int main()
   {
    int prime(int);//函數(shù)聲明
    int n;
    printf("請輸入一個整數(shù):\n");
    scanf("%d",&n);	
    if(prime(n))
	{    
        printf("%d 是素數(shù)。\n",n);
    }else
    {
        printf("%d 不是素數(shù)。\n",n);
    }
    return 0;
   }
int prime(int n)  //函數(shù)定義
{
    int flag = 1,i;
    if (n <= 1)  //判斷0和1,需要先排除
       flag = 0; //返回0值
    for(i=2;i <= n/2 && flag == 1;i++) //n無法整除比n/2大的數(shù),flag=1為真,即為素數(shù),繼續(xù)執(zhí)行
        if (n%i == 0)                 //如果取余為0,則其可以整除,不是素數(shù)。
        flag=0;                     //標(biāo)記flag=0,非素數(shù)。
    return flag;
}

總結(jié)

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++教程之a(chǎn)rray數(shù)組使用示例詳解

    C++教程之a(chǎn)rray數(shù)組使用示例詳解

    這篇文章主要為大家介紹了C++教程之a(chǎn)rray數(shù)組使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • C++實(shí)現(xiàn)推箱子功能附加回撤示例

    C++實(shí)現(xiàn)推箱子功能附加回撤示例

    本文主要介紹了C++實(shí)現(xiàn)推箱子功能附加回撤示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • C++ MD5的源碼實(shí)例詳解

    C++ MD5的源碼實(shí)例詳解

    這篇文章主要介紹了C++ MD5的源碼實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • C++ 虛函數(shù)表圖文解析

    C++ 虛函數(shù)表圖文解析

    最近學(xué)了設(shè)計模式中的簡單工廠模式,對多態(tài)有了具體的認(rèn)識。于是補(bǔ)了補(bǔ)多態(tài)、虛函數(shù)、虛函數(shù)表相關(guān)的知識,本文介紹了C++ 虛函數(shù)表,感興趣的了解一下
    2021-05-05
  • Pthread?并發(fā)編程線程自底向上深入解析

    Pthread?并發(fā)編程線程自底向上深入解析

    這篇文章主要為大家介紹了Pthread?并發(fā)編程線程自底向上深入解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • 詳解C++模擬實(shí)現(xiàn)priority_queue(仿函數(shù))

    詳解C++模擬實(shí)現(xiàn)priority_queue(仿函數(shù))

    本文主要介紹了關(guān)于C++中優(yōu)先級隊列的模擬實(shí)現(xiàn),以及仿函數(shù)的使用,優(yōu)先級隊列是一種容器適配器,其第一個元素總是最大的,仿函數(shù)本質(zhì)是一個類,重載了operator(),可改變比較邏輯,同時,文中還介紹了如何進(jìn)行類的比較,如日期類或其指針的比較,以及庫中sort函數(shù)的使用方法
    2024-10-10
  • cmake跨平臺構(gòu)建工具的學(xué)習(xí)筆記

    cmake跨平臺構(gòu)建工具的學(xué)習(xí)筆記

    CMake是一個跨平臺的安裝/編譯工具,通過CMake我們可以通過簡單的語句來描述所有平臺的安裝/編譯過程,下面這篇文章主要給大家介紹了關(guān)于cmake跨平臺構(gòu)建工具的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • C指針原理教程之C快速入門

    C指針原理教程之C快速入門

    C語言作為大學(xué)編程或者計算機(jī)專業(yè)的一門必修課,把很多初學(xué)編程的小伙伴都難住了,感覺無從下手,今天呢,我們來簡單介紹下,如何快速入門C語言
    2019-02-02
  • 如何使用VC庫函數(shù)中的快速排序函數(shù)

    如何使用VC庫函數(shù)中的快速排序函數(shù)

    下面呢,小編就為大家介紹一下VC中庫函數(shù)qsort()的用法。需要的朋友可以過來參考下
    2013-09-09
  • C語言簡明講解三目運(yùn)算符和逗號表達(dá)式的使用

    C語言簡明講解三目運(yùn)算符和逗號表達(dá)式的使用

    三目運(yùn)算符,又稱條件運(yùn)算符,它是唯一有3個操作數(shù)的運(yùn)算符,有時又稱為三元運(yùn)算符。三目運(yùn)算符的結(jié)合性是右結(jié)合的;逗號表達(dá)式,是c語言中的逗號運(yùn)算符,優(yōu)先級別最低,它將兩個及其以上的式子聯(lián)接起來,從左往右逐個計算表達(dá)式,整個表達(dá)式的值為最后一個表達(dá)式的值
    2022-04-04

最新評論