Prime数字部分代码不起作用,它说我无法比较指针和整数。我不知道该怎么做。
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
int input[20] , i;
for (int i = 0; i < 20 ; i++)
{
cout << " Enter 20 interger numbers from 0 to 99 "<< endl;
cin >> input[i];
}
for (i=2; i<20 ; i++) // edited as per the comments below
{
if(input==i) // there is error here saying cant compare like this
{
cout << input << endl ;
}
}
return 0;
}
答案 0 :(得分:1)
您查找素数的算法是错误的。试试这个吧。这是有效的解决方案。
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
int input[20] , i,prime,t;
cout << " Enter 20 interger numbers from 0 to 99 "<< endl; //
for (int i = 0; i < 20 ; i++)
{
cout << " Enter a number"<< endl; //
cin >> input[i];
}
cout << " prime numbers are: "<< endl; //
prime=1;
for (i=0; i<20 ; i++)
{
for(t=2;t<input[i];t++)
{
if(input[i]%t==0){
prime=0;
break;
}
}
if(prime==1 && input[i]!=0){
cout << input[i] << endl;
}
prime=1;
}
return 0;
}
答案 1 :(得分:0)
您的主要检查不正确。代码:
for (i=2; i<input ; i++)
{
if(input==i)
{
cout << input << endl ;
}
}
不起任何作用。在input
中引用i < input
时,实际上是指一个指向数组第一个元素的指针。你真正需要做的是对这个数组的所有元素进行置换,并检查它们是否为素数。像下面显示的内容应该有效:
bool flag;
for (i=0; i<20 ; i++) //Go over all 20 elements in array
{
flag = true;
for(int j = 2;j < input[i];j++)
{
if(input[i] % j == 0)
{
flag=false;
break;
}
}
if(prime==true)
cout << input[i] << endl;
}
在这里,如果input[i]
中的数字除以2到input[i]
之间的任何数字,并给出余数0(由模数检查 - %
- 运算符),则它不是素数。
我们最初认为它是素数并将flag
设置为true
。如果我们发现它可以被1或其自身以外的其他东西整除,我们将flag
设置为false
,并且break语句会从内部for循环中断开,因为不需要进一步检查。
这里,input[i]
引用数组中i
索引的元素,索引为0。
答案 2 :(得分:0)
感谢您的帮助。我在这里得到了完整的工作代码。只是一个简单的问题,我需要改变其他任何东西以使其更好。
#include <iostream>
using namespace std;
int main()
{
int i,t, max, min, x[20], even=0, odd=0, prime;
cout << "Enter 20 integer numbers from 0 to 99: "<<endl;
for (i=1;i<=20;i++)
{
cout << "Input " << i <<":";
cin >> x[i];
}
min=x[0];
max=x[0];
for(int i=1;i<=20;i++)
{
if(min>x[i])
{
min=x[i];
}
else if(max<x[i])
{
max = x[i];
}
}
cout<<"Max is "<< max <<endl;
cout<<"Min is "<< min <<endl;
cout << "Prime numbers are: " << endl ;
prime=1;
for (i=2; i<=20 ; i++)
{
for(t=2;t<x[i];t++)
{
if(x[i]%t==0)
{
prime=0;
}
}
if(prime==1)
{
cout << x[i] << endl;
}
prime=1;
}
return 0 ;
}