if判断条件里面嵌套函数的问题

这是一个建立数组来判断素数的程序
if判断条件里面有个isprime函数具体怎么执行?函数里面的返回值又有什么用?当x=4时应该也会执行isprime后再执行prime[count++]=i才对啊,为什么不执行了?
图片和代码一致,建议看图
#include
int main(){
const int number=100;
int prime[100] = {2};
int count =1;
int i=3;
while(count
if (isprime(i,prime,count)){
prime[count++]=i;
}i++;
}

for(i=0;iprintf("%d",prime[i]);
    if((i+1)%5)
    printf("\t");
    else printf("\n");
}
return 0;}

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

img

isprime这个函数应该写在main函数之前才能被调用

#include <stdio.h>
int isprime(int x, int knownprimes[], int numberOfKnownPrimes)
{
    int ret = 1;
    int i;
    for (i = 0; i < numberOfKnownPrimes; i++)
    {
        if (x % knownprimes[i] == 0)
        {
            ret = 0;
            break;
        }
    }
    return ret;
}
int main()
{
    const int number = 100;
    int prime[100] = {2};
    int count = 1;
    int i = 3;
    while (count < number)
    {
        if (isprime(i, prime, count))
        {
            prime[count++] = i;
        }
        i++;
    }
    for (i = 0; i < number; i++)
    {
        printf("%d", prime[i]);
        if ((i + 1) % 5)
            printf("\t");
        else
            printf("\n");
    }
    return 0;
}

img