关于函数、素数表的问题,如何解决?

判断常数能否将前面所有素数整除,若不能整数,即为新素数,并保存至数组里。
用代码块功能插入代码,请勿粘贴截图
include
//主函数 
//判断函数,返回值 
//输出数组
int main( void ){
    int num[100] = {2};
    int i = 3;//起始数 
    int count =1;//计数器
    
    while( count < 100 ){
        if( IsPrime( i , num , count ) ){
        num[count++] = i;
    }
    i++;
    }
    
    //输出数组 
    int a ;
    for(a=0;a<100;a++){
        printf("%d\t", num[count] );
        if( (a+1)%5==0 ){
            printf("\n");
        }
    }
    return 0;
} 
int IsPrime( int i , int num[ ] , int count){
    int ret = 1;
    int a;
    for( a=0 ; a<count ; a++ ){
        if( i%num[a] == 0 ){
            ret = 0 ;
            break;
        }
    }
    return ret;
}

不报错,也无结果
我的解答思路和尝试过的方法
教材代码:
#include

int main(void)
{
    int prime[ 100 ]={2};
    int count=1;
    int i=3;
    
    while (count< 100 ){
        if( isprime(i,prime,count)){
            prime[count++]=i;
        }
        i++;
    }
    for(i=0;i<100;i++){
        printf("%d",prime[i]);
        if( (i+1)%5 )printf("\t");
        else printf("\n");
    }
    return 0;
}

int isprime(int x,int knownprimes[],int y){
    int ret=1;
    int i;
    for(i=0;i < y;i++){
        if(x% knownprimes[i]==0){
            ret=0;
            break;
        }
    }
    return ret;
}

结果

img


修改

# include<stdio.h>
//主函数
//判断函数,返回值
//输出数组
int main( void ){
    int IsPrime( int i , int num[ ] , int count);
    int num[100] = {2};
    int i = 3;//起始数
    int count =1;//计数器

    while( count < 100 ){
        if( IsPrime( i , num , count ) ){
            num[count++] = i;
        }
        i++;
    }

    //输出数组
    int a ;
    for(a=0;a<100;a++){
        printf("%d\t", num[a]); // 修改num[count]
        if( (a+1)%5==0 ){
            printf("\n");
        }
    }
    return 0;
}
int IsPrime( int i , int num[] , int count){
    int ret = 1;
    int a;
    for( a=0 ; a<count ; a++ ){
        if( i%num[a] == 0 ){
            ret = 0 ;
            break;
        }
    }
    return ret;
}


不好意思,我自己发现哪里错了,输出部分的数组输出应该是num[a]而不是num[count]。太粗心了