需要帮助在 {c} 中制作质数行

Need help making prime numbers row in {c}

我需要在 {c} 中编写一个程序,为输入的数字提供质数(例如用户输入 50。写回 229) 所以,我在制作循环时被卡住了。 我正在尝试为 row[100] 定义 row[0]=2,row[1]=3 然后我使 i=4 并尝试制作一个循环,为数字 i 分配数字 i 与每个数字在行中(因为我知道的那些是质数)并获取模块(0 之后的数字,不确定英语怎么说),然后如果它们都有模块!=0 那么我知道它是质数并且我想将它添加到行中。

那么有人可以帮我写下这行吗?提前致谢:)

#include <stdio.h>
int main ()
{
  int i,numb=4,position,temp,temp1,row[100];
  printf(" enter position (1-100)\n");
  scanf("%d",&position);
  if (position>100||position<0 )
  {
       printf("error,enter position between 1 and 100"); 
       return(0);
   }
   row[0]=2;
   row[1]=3;
   i=2;
   do
   {
          temp=numb%2;                       
          temp1=numb%3;
          if (temp!=0 && temp1!=0)
          {
              row[i]=numb;
             i++;
           }
          numb++;
      }
      while (i<100);
      printf("%d. prime number is %d",position,row[position]);
      return 0;
}

好的,所以我需要将我要求模块从 2 和 3 中分离出来的部分更改为要求模块从当时行中的所有数字中分离出来。谢谢你的帮助

#include <stdio.h>

#define MAX_N 100

int main(void){
    int i, odd, temp, position, n = 0, row[MAX_N];

    row[n++]=2;
    row[n++]=3;
    for(odd = 5; n < MAX_N; odd += 2){
        int is_prime = 1;//true
        for(i = 1; i < n; ++i){
            temp = row[i];
            if(temp * temp > odd)
                break;
            if(odd % temp == 0){
                is_prime = 0;//false
                break;
            }
        }
        if(is_prime)
            row[n++] = odd;
    }

    printf(" enter position (1-%d)\n", MAX_N);
    scanf("%d", &position);
    if (position > 100 || position < 1){
        printf("error,enter position between 1 and %d\n", MAX_N); 
        return 0;
    }
    printf("%d. prime number is %d", position, row[position - 1]);

    return 0;
}