埃氏筛法打印质素表碰到数组越界问题

来源:互联网 发布:mac去除app store角标 编辑:程序博客网 时间:2024/06/18 00:43
卡了我2个小时,NO,好像是3个小时/cry,实在想不出来原因,问了群里的大佬才明白
是怎么回事了,数组越界!!!数组越界!!!数组越界!!!
#include <cstdio>#include <iostream>#define M 1000 //测试M等于10且N等于10,M等于100且N等于100prime[0]都是2 #define N 1000//可当M等于1000,N等于1000的时候,prime[0]怎么输出是1呀????? using namespace std;int pri[M];//注意pri数组共有M个元素,没有pri[M]这个元素 int prime[N];//保存的素数表 void f()//埃氏筛法 {int j=0;for(int i=2;i<=M;i++)//当i等于M时 {if(!pri[i])   //执行pri[M]已经越界了,强调没有pri[M]这个元素,是共有M个元素 {prime[j++]=i;int k=2;while((i*k)<=M) //当i*k等于M时 {pri[i*k]=1;//pri[i*k]也越界了 k++;}}}}int main(){f();for(int i=0;i<=10;i++)cout<<prime[i]<<endl; return 0;} 

0 0
原创粉丝点击