C++ 提示用户输入0到99之间的20个整数。根据这些数据显示质数

C++ 提示用户输入0到99之间的20个整数。根据这些数据显示质数,c++,C++,素数部分代码不工作,它说我不能比较指针和整数。我不知道该怎么办 #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;

素数部分代码不工作,它说我不能比较指针和整数。我不知道该怎么办

#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;
}
#包括
#包括
使用名称空间std;
int main()
{
int输入[20],i;
对于(int i=0;i<20;i++)
{
不能输入[i];
}

对于(i=2;i您的基本检查不正确。代码:

for (i=2; i<input ; i++)
{
    if(input==i)
    {
        cout << input << endl ;
    }
} 
这里,如果将
input[i]
中的数字除以从2到
input[i]
的任何数字,并给出余数0(由模数-
%
-运算符检查)我们最初认为它是素数,并将<代码>标志< /代码>设置为<代码>真< /代码>。如果我们发现它可以被除1或其本身以外的事物整除,我们将<代码>标志< /代码>设置为<代码> false <代码>,并且中断语句从内部for循环中跳出,因为不需要进一步检查。
这里,
input[i]
指的是索引为0的数组中具有
i
th索引的元素。

您查找素数的算法是错误的。试试这个。这是有效的解决方案

#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;
}
#包括
#包括
使用名称空间std;
int main()
{
int输入[20],i,素数,t;

cout谢谢你的帮助。我在这里得到了完整的工作代码。只是一个简单的问题,还有什么我需要更改以使其更好的吗

#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 ;   
}
#包括
使用名称空间std;
int main()
{
int i,t,max,min,x[20],偶数=0,奇数=0,素数;

无法正确格式化的codeChange
(i=2;当有人告诉你代码有问题时,我不会对其进行实时编辑…因此不是实时调试会话,将代码更改为更正答案指出的错误会使答案无效。这对回答者不公平。对不起,我是新来的。谢谢你指出它…我将很快添加代码。到那时,西尔打开模运算符。不客气。请下次尝试自己理解概念并制定自己的代码。祝您愉快。我担心此代码不适用于素数检查。
prime=1
必须在for循环中初始化。请查看我的示例。是的,谢谢。它有效。仅当输入0时,它显示为pr不是的ime数字。我想一个简单的条件应该可以解决这个问题。你必须确保在输入后整数是正的,然后再进行素数检查。如果不是正的,立即将其标记为非素数。如果你输入2、4、6、8,此代码将不起作用。它会将所有整数标记为素数,如
prime
f他使用的滞后在外部初始化。@dulajsanjaya很抱歉,我之前没有发现底部的
prime=1
。它一直在那里吗?如果是这样,它会很好。抱歉,请投赞成票。
#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 ;   
}