[英]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.