为什么这种方法得不出来结果?

1、首先int a[20]是定义了一个整型数组,长度为20。取数组中元素是通过下标方式获取,下标从0开始,所以长度为20的数组,最大下标是19。你这里面用a[20]会越界,运行错误;

2、你是想把0~100以内的素数存在a数组里面?那第一个for循环里面需要再加一个变量当作数组a的下标使用,例如写成a[n];

3、素数又称质数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;

这么改下,供参考:

#include<stdio.h>

int main()
{
    int a[100]={0},m=0,i,j,flg;
    for(i=1;i<100;i++){
        flg=0;
        for(j=2;j<i;j++){
           if(i%j==0){
             flg=1; break;
           }
        }
        if(!flg && i!=1)a[m++]=i;
    }
    for(i=0;i<m;i++)
        printf("%d ",a[i]);
    printf("\n");
    return 0;
}