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 ;
}