为什么我的这个c程序会无法启动,拒绝访问,以前出错都可以按提示修改的

#include"stdio.h"
int main()
{
int m, n, i;
int a[20] = { 2, 3 };
for (m = 1; m <= 19; m++)
{
for (n = a[m] + 1;; n++)
{
int c = 1;
for (i = 0; i <= m&&c != 0; i++)
{
if (n%a[i] == 0) c = 0;
if (i = m)
{
a[m + 1] = n;
printf("%d", a[m + 1]);
}
}
}
}
return 0;
}

用你的代码在Dev C++编译,可以执行的,只不过我把#include"stdio.h"该改成了#include< stdio.h>

if(i=m)

是什么意思,我想反问你?
你是想判断他们相等,还是m赋值给i是否成功!

应该问题不大,你是用什么编译器没办法运行,还是没办法编译

我不知道你试图写这段代码做什么,但是我给你修改后如下:
第一:你出现无法运行,是因为你通过下表i访问数组a时,

//if (n % a[i] == 0) 

这句话本身没什么问题,但是当他试图遇到i>=2时
你的数组a[2]没有初始化,所以会出错。

#include <stdio.h>
#define MAX_N 100
int main()
{
    int m, n, i;
    int a[20] = { 2, 3 };
    for (m = 1; m <= 19; m++)
    {
        for (n = a[m] + 1;n<MAX_N; n++)
        {
            int c = 1;
            for (i = 0; i <= m && c != 0; i++)
            {
                /*Yur are just init the array with a[0]=2,a[1]=3*/
                 /*You try to call a uninit array ..
                  *if you wanna do it with 'i' as index
                  please make sure you a[index] have init first
                  */
                //if (n % a[i] == 0) {
                if (n % a[0] == 0) {
                    c = 0;
                }
                if (i == m)
                {
                    a[m + 1] = n;
                    printf("%d", a[m + 1]);
                }

            }

        }
    }
    return 0;
}

代码的注释,我只能用简单而且有可能有大量语法错误的英文写。
不过这里我的中文说明,希望我能够说得清楚。
希望能帮到你!