下面我写了一段代码,要求用户输入向量的元素数和元素数。我想用一个函数来检查向量中的素数。例如,我有一个以2,6,3,7为元素的向量,函数要检查有多少素数,但输出显示向量只有2个素数。所以,我的问题是:为什么我的代码不工作?
#include <iostream>
using namespace std;
int input_vector(int a,int t[20]);
int output_vector(int a,int t[20]);
int prime(int a,int nr[20]);
int main()
{
int i,n,m,v[20],w[20];
cout<<"Enter the number of vector's elements:";
cin>>n;
input_vector(n,v); //input vector
cout<<"The vector is: ";
output_vector(n,v); //output vector
cout<<endl;
prime(n,v); //prime numbers from vector
cout<<endl<<endl;
}
int input_vector(int a,int t[20])
{
int i;
for(i=1;i<=a;i++)
{
cout<<"v["<<i<<"]=";
cin>>t[i];
}
}
int output_vector(int a,int t[20])
{
int i;
for(i=1;i<=a;i++) cout<<t[i]<<" ";
}
int prime(int a,int nr[20])
{
int i,p,j;
p=0;
for(j=1;j<=a;j++)
for(i=2;i<=(nr[j]/2);++i)
{
if((nr[j]%i==0)) p=p+1;
}
if(p!=0) cout<<"The vector has "<<p<<" prime numbers.";
else cout<<"THERE ARE NO PRIME NUMBERS!";
}
查找素数的算法的逻辑流程中有一个错误。我在下面修复了它,并且使您的方法无效
,因为它们不返回任何内容。已声明且未使用的变量也被消除。
#include <iostream>
using namespace std;
void input_vector(int a,int t[20]);
void output_vector(int a,int t[20]);
void prime(int a,int nr[20]);
int main()
{
int n,v[20];
cout<<"Enter the number of vector's elements:";
cin>>n;
input_vector(n,v); //input vector
cout<<"The vector is: ";
output_vector(n,v); //output vector
cout<<endl;
prime(n,v); //prime numbers from vector
cout<<endl<<endl;
}
void input_vector(int a,int t[20])
{
int i;
for(i=1;i<=a;i++)
{
cout<<"v["<<i<<"]=";
cin>>t[i];
}
}
void output_vector(int a,int t[20])
{
int i;
for(i=1;i<=a;i++) cout<<t[i]<<" ";
}
// here algorithm to find prime numbers was faulty
void prime(int a,int nr[20])
{
int i,p,j, counter; // added a counter
p=0;
for(j=1;j<=a;j++) {
counter = 0;
for(i=2;i<=(nr[j]/2);++i) // if a divisor of nr[j] is found, add 1 to counter
if(nr[j]%i==0)
counter += 1;
if (counter == 0) // if no divisors found, then +1 primes' count
p += 1;
}
if(p!=0) cout<<"The vector has "<<p<<" prime numbers.";
else cout<<"THERE ARE NO PRIME NUMBERS!";
}