簡體   English   中英

找出有多少是素數

[英]find how many is prime number

我想給出數字數組並找出其中有多少是素數,但程序給我零

    int Prime_complete(int a[],int len){
    int sum=0;
    int m,flag;
    for(int i=0 ; i<len ; i++){
        m=a[i]/2;  
       for(i = 2; i <= m; i++){ 
            if(a[i] % i == 0){ 
                 flag=1;  
                 break;  
            } 
       
        }  
             if (flag==0)  {
                 sum++;
            }  
     } 
    return sum;
}

正如評論中已經提到的,您需要修復標志變量以重置每次迭代。 現在你的代碼找到一個不是素數的數字,然后標志永遠不會重置。

#include <iostream>

using namespace std;

int Prime_complete(int a[],int len)
{
    int sum = 0;
    int flag = 1;
    
    for(int i = 0; i < len; i++)
    {
        for (int j = 2; j < a[i]/2; j++)
        {
            if (a[i] % j == 0)
            {
                flag = 1;
            }
        }
        if (flag == 0)
        {
            sum++;
        }
        flag = 0;
    } 
    return sum;
}

int main()
{
    int numbers[13] = {3, 5, 7, 11, 13, 17, 19, 23, 29, 4, 6, 8, 10};
    cout << Prime_complete(numbers,13);

    return 0;
}

您還可以通過僅檢查直到 sqrt(a[i]) 的值來改進您的素數檢查,但在這種情況下這只是一個很小的改進。

暫無
暫無

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

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