想描述第n个素数,为什么不行

#include<stdio.h>
extern int flag = 1;
int prime(int n)
{
for (int i = 2; i < n; i++)
if (n % i == 0)
flag = 0;
return flag;
}
int num(int n)
{
int b = 0; int i=1;
while (b < n)
{
i++;
b += prime(i);

}
return i;
    

}
int main()
{
int n,m;
scanf_s("%d", &n);
m = num(n);
printf("%d", m);
return 0;

}

供参考:

#include <stdio.h>
int prime(int n)
{
    if (n <= 3)return n > 1;
    for (int i = 2; i < n; i++)
        if (n % i == 0)
            return 0;
    return 1;
}
int num(int n)
{
    int b = 0; int i = 1;
    while (b < n)
    {
        i++;
        if (prime(i))b++;
    }
    return i;

}
int main()
{
    int n, m;
    scanf_s("%d", &n);
    m = num(n);
    printf("%d", m);
    return 0;
}