#include<cmath>
#include<cstring>
#include<iostream>
using namespace std;
int main(int argc, char* argv[])
{
const int n = 100;
bool a[101];
int i, j;
memset(a, 1, sizeof(a));
a[1] = 0;
for(i = 2; i <= sqrt(n); i ++)
{
if(a[i])
{
for(j = 2; j <= n/i; j ++)
{
a[i*j] = 0;
}
}
}
for(i = 2; i <= n; i ++)
{
if(a[i]) cout << i << " ";
}
return 0;
}
追问为什么是bool[101]?100可以吗
追答数组定义时的长度是从0开始计算的 即0-100 一共有101个数所以要定义为101,但本题中没有使用下标0,所以将算法稍作修改,让0-99 对应 数值1-100的话长度定义可以用100(一般不要在这里纠结太多,没什么意义)
追问为什么用bool不用int
追答bool 只占一个字节
int 一般占4个字节
你喜欢用int也可以
追问为了省内存是吧?
追答恩
追问好的,谢谢,我还有最后一个问题。
int main中为什么还有那一串代码…
那个括号我可以空着吧?
追答可以
追问那个括号里你写的是什么意思