我是初学者,最近有了电脑,可是刚开始的几个程序就出现了问题,那位好心人帮忙看看怎么回事啊,谢谢了!!!!

    下面的程序在VC++6.0上运行后出现错误  "0x0040136c"指令引用的"oxffffffe4"内存。该内存不能为written。

1.使用筛法求素数。
//sieve.cpp

#define DELETED 0
#define N 100
#include <stdio.h>
void main()
{
int i,j,n,m;int prime[N];int x[N];
for(i=0;i<N;i++)x[i]=i+i+3;
prime[0]=2;//The first prime.
for(i=0;i<N;i++){
for(n=1;j<2*N+3;n++)
j=n*x[i]+i;
x[j]=DELETED;
}
i=0;j=1;
while(i<N)
if(x[i]!=DELETED)prime[j++]=x[i++];
m=j;
for(j=0;j<N;j++)
printf("%d\n",prime[j]);
printf("\n There are %d primes in total.\n",j);
}

2.求素数
//每次显示输出的都是从N/2开始的素数,找不出原因~~
#include<iostream.h>
#define N 200
void prime(int n)
{int sum=1;//素数总数sum
    cout<<'2'<<endl;//第一个素数
    for(int k=3;k<N;k++)
    { int comp=0;//comp=1时为合数
    for(int i=2;i<=N/2;i++)
        if(k%i==0){comp=1;break;}
        if(!comp)
        {++sum;
        cout<<k<<endl;
        }
    }
    cout<<"There are"<<sum<<"prime in total."<<endl;
}



void main()
{prime(N);
}
 


3.求最大最小值
//下面这个小程序也不能预想的输出,min得不到正确的值。不知道是什么原因。
#define n 10
#include<iostream.h>
int a[n]={1,3,53,42,34,54,32,32,112,23};
void MaxMin(int i,int j,int &max,int &min)
{
    if(i==j)max=min=a[i];
    else if(i=j-1)
    {if(a[i]<a[j])
    {max=a[j];
     min=a[i];
    }
    else{max=a[i];max=a[j];}
    }
    else{int mid=(i+j)/2;
    int max1,min1;
    MaxMin(i,mid,max,min);
    MaxMin(mid+1,j,max1,min1);
    if(max<max1)max=max1;
    if(min>min1)min=min1;
    }
}


void main()
{
int x,y;int i;
for(i=0;i<n;i++)
{
cout<<a[i]<<"\n";
}
MaxMin(0,n-1,x,y);
cout<<x<<"\n"<<y<<endl;
}