من برای استخراج اعداد اول در محدوده 1000 عدد با کمک آرایهها در زبان C قطعه کد زیر را نوشتم. این برنامه یک آرایه که اعضای آن از نوع داده منطقی (درست و نادرست) هستند تشکیل میدهد و تمام آنها را با مقدار درست مقدار دهی میکند سپس با انجام عملیات ریاضی عناصری از آرایه را که اندیکس آنها عدد اول نیست به نادرست تغییر میدهد. سپس با کمک حلقه اندیکس عناصری را که همچنان درست ماندهاند استخراج و به عنوان عدد اول گزارش میکند. ولی مشکل اینجاست که این برنامه هیچ خروجی نمیدهد. یعنی انگار براساس شرط حلقه پایانی تمام عناصر تبدیل به نادرست شدهاند. آیا میتوانید به من برای تصحیح آن کمک کنید؟!
#include <stdio.h>
#include <stdbool.h>
void main (){
bool NN [1000] = {true}; /*Creating an array of 1000 elements all set to 'True' value (one) by default.*/
unsigned short int idx = 2, jdx = 0; /*A variable to scan through the array above starting from the first prime number '2'*/
NN [0] = false; NN[1] = false; /*Zero & One are not prime integers.*/
while (idx < 1000){
jdx = idx + 1;
while (jdx < 1000)
{
if (jdx%idx == 0){
NN [jdx] = false;
}
jdx++;
}
jdx = 0;
idx++;
}
jdx = 2;
while (jdx < 1000)
{
if (NN[jdx]){
printf ("%hu ", jdx);
if (jdx%50 == 0) puts(" ");
}
jdx++;
}
}