请教一个简单的C++代码的错误
#include <iostream>
using namespace std;
void main()
{
int a;
int i;
for(a=2;a <=100;a++)
{
for(i=2;i <=a-1;i++)
{
if (a%i=0)
{
break;
}
cout < <a;
}
}
}
[解决办法]
break;
改为 continue
[解决办法]
#include <iostream >
using namespace std;
void main()
{
int a;
int i;
for(a=2;a <=100;a++)
{
for(i=2;i <=a-1;i++)
{
if (a%i=0) //-->> if(a%i==0)
{
break; //-->> continue;??
}
cout < <a;
}
}
}
[解决办法]
if (a%i=0) 表达式恒为false,
[解决办法]
#include<iostream >
using namespace std;
void main()
{
int a;
int i;
for(a=2;a<=100;a++)
for(i=2;i<a;i++)
if(a%i==0) //////////=表示给左边的变量附值 应用==
{
cout<<a<<" "; //////
break; //////
}
}
lz 看看这样行不行
[解决办法]
你是在求100内的素数啊。
错误倒是只有 楼上说的那一处:
if语句 if (a%i=0)
= 是复制符号。
这样的程序编译是不出错的,
为了避免这样的错误,
应该养成 把常量 写在前面的习惯:
这个就应该改成
(0 == a%i)
还有,你这样求素数的效率太低了。
用筛法吧。
[解决办法]
#include<iostream > using namespace std; int main() { int flog; // 标记是否为素数 for(int a=2; a<=100; ++a) { flog = 1; for(int i=2; i<=a-1; ++i) { if(a%i == 0) { flog = 0; // 不是素数,淘汰 break; } } if(1 == flog) { cout << a << " "; } } return 0;}