作业帮 > 综合 > 作业

线性筛法#includeint main(){const int MAX=10000;int is_prime[MA

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/05/01 03:10:40
线性筛法
#include
int main(){
const int MAX=10000;
int is_prime[MAX];
int prime[MAX];
int num=0;
for(int i=0;i
变量的作用范围是申明其{}内的,几个int i定义都在同一个{}范围内申明,所以编译会出错.
建议去复习下变量的作用范围.
{
int a;
{
int b;
//变量a和b的范围
}
//变量a的范围
}
再问: 我定义的三个i都是平行的,怎么会存在作用域重叠呢?
再答: 如果你一定要这样,可以这样改#include<stdio.h>
int main()
{
\x09const int MAX=10000;
\x09int is_prime[MAX];
\x09int prime[MAX];
\x09int num=0;
\x09{
\x09\x09for(int i=0;i<MAX;i++)is_prime[i]=1;
\x09}
\x09{
\x09\x09for(int i=2;i<MAX;i++)
\x09\x09{
\x09\x09\x09if(is_prime[i]==1)prime[num++]=i;
\x09\x09\x09for(int j=0;j<num;j++)
\x09\x09\x09{
\x09\x09\x09\x09if(i*prime[j]>MAX)break;
\x09\x09\x09\x09is_prime[i*prime[j]]=0;
\x09\x09\x09\x09if(i%prime[j]==0)break;
\x09\x09\x09}
\x09\x09}
\x09}
\x09{
\x09\x09for(int i=0;i<num;i++)printf("%d ",prime[i]);
\x09}
\x09return 0;
}
再问: 哦,意思是作用于只能用{}限制,for不算?