我的代码有什么问题? C++
What is wrong with my code? c++
我正在尝试输出不超过输入数字的所有质数,但我不明白为什么它不起作用。
有人可以花时间解释我做错了什么吗?
#include<iostream>
#include<string>
using namespace std;
int main()
{
int number;
cout << "Enter Number: ";
cin >> number;
for (int a = 2;a <= number;a++)
{
bool prime = false;
for (int b = 2;b < a;b++)
{
if (a%b == 0)
{
prime = true;
break;
}
if (prime = true)
cout << a << endl;
}
}
system("pause");
return 0;
}
在此代码中:
if (a%b == 0)
{
prime = true;
break;
}
你必须这样写:
if (a%b == 0)
{
prime = false;
break;
}
同时将 bool prime = false;
更改为 bool prime = true;
最后这个代码:
if (prime == true)
cout << a << endl;
必须在for loop
之外
你的代码会更好:
#include<iostream>
#include<string>
using namespace std;
int main()
{
int number;
cout << "Enter Number: ";
cin >> number;
for (int a = 2; a <= number; a++)
{
bool prime = true;
for (int b = 2; b < a; b++)
{
if (a%b == 0)
{
prime = false;
break;
}
}
if (prime == true)
cout << a << endl;
}
system("pause");
return 0;
}
结果(示例):
for(i=2;i<=number;i++)
{
ct=0;
for(j=2;j<i;j++)
{
if(i%j==0)
{
ct=1;
break;
}
}
if(ct==0)
{
printf("%d \t",i);
}
}
我正在尝试输出不超过输入数字的所有质数,但我不明白为什么它不起作用。
有人可以花时间解释我做错了什么吗?
#include<iostream>
#include<string>
using namespace std;
int main()
{
int number;
cout << "Enter Number: ";
cin >> number;
for (int a = 2;a <= number;a++)
{
bool prime = false;
for (int b = 2;b < a;b++)
{
if (a%b == 0)
{
prime = true;
break;
}
if (prime = true)
cout << a << endl;
}
}
system("pause");
return 0;
}
在此代码中:
if (a%b == 0)
{
prime = true;
break;
}
你必须这样写:
if (a%b == 0)
{
prime = false;
break;
}
同时将 bool prime = false;
更改为 bool prime = true;
最后这个代码:
if (prime == true)
cout << a << endl;
必须在for loop
你的代码会更好:
#include<iostream>
#include<string>
using namespace std;
int main()
{
int number;
cout << "Enter Number: ";
cin >> number;
for (int a = 2; a <= number; a++)
{
bool prime = true;
for (int b = 2; b < a; b++)
{
if (a%b == 0)
{
prime = false;
break;
}
}
if (prime == true)
cout << a << endl;
}
system("pause");
return 0;
}
结果(示例):
for(i=2;i<=number;i++)
{
ct=0;
for(j=2;j<i;j++)
{
if(i%j==0)
{
ct=1;
break;
}
}
if(ct==0)
{
printf("%d \t",i);
}
}