#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;
}
代码的注释,我只能用简单而且有可能有大量语法错误的英文写。
不过这里我的中文说明,希望我能够说得清楚。
希望能帮到你!