簡體   English   中英

簡單的 function 用於在 c++ 中使用 while 循環查找下一個素數

[英]simple function for finding the next prime number using a while loop in c++

第一次在這里發帖,所以你好,世界哈哈。

我開始學習 c++ 並做一些挑戰。 我發現的一個是“找到下一個素數”給定一個 integer,制作一個 function 以找到下一個連續的素數,例如如果給定 12 返回 13,如果給定 24 返回 29,如果給定一個素數返回。 我不明白為什么下面的代碼塊不起作用(我的猜測是其中兩個條件

int nextPrime(int num) {

while (num % 2 !=0 && num %3 != 0 && num %4 != 0 && num %5 != 0 && num %6 != 0 && num %7 != 0 && num %8 != 0 && num %9);
         ++num;

return num;

}

這是一項相對容易的任務,但我不知道為什么它不工作的事實比它不工作的事實更讓我困擾。 非常歡迎您可愛的互聯網人可以提供的任何幫助。

bool PrimeNumber(int n) {for(int i=2;i<=n;i++){ if(n%i==0){ return false }
返回真 }

#include <bits/stdc++.h>
using namespace std;

//check if number is prime divide by all number less than sqrt(n)
bool isprime(int n){
    for(int i=2;i*i<=n;i++){
        if(n%i==0){
            //not a prime return false then.
            return false;
        }
    }// its a prime number.
    return true;
}

int main() {
    
    int n = 12345;
    
    while(1){
        if(isprime(n)){
            cout << n <<endl;
            // id its a prime number we are done break the loop.
            break;
        }
        // increase n by 1. continue the loop untill the next prime.
        n+=1;
    }
    return 0;
}

你想要做的是檢查從下一個到給定數字的每個數字,看看它是否是素數。 然后將第一個返回為素數。

  1. 在 nextPrime() function 中,我們取一個從下一個到給定數字的數字。

  2. 然后在 isPrime() 中,檢查它是否是素數。

  3. 如果是,則返回數字。 否則繼續下一個。

bool isPrime(int n) 
{ 
    // Corner case 
    if (n <= 1) 
        return false; 
  
    // Check from 2 to n-1 
    for (int i = 2; i < n; i++) 
        if (n % i == 0) 
            return false; 
  
    return true; 
}

int nextPrime (int n){
    for (int i=n+1; i<1000000; i++){
        if (isPrime(i)) return i;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM