У меня проблема с циклом в C. Целью программы является найти простые числа в известном количестве k. Вот моя программа:для цикла C работают странно?
unsigned int i, k, j;
unsigned long int prime;
int _tmain(int argc, _TCHAR* argv[]) {
printf("How many prime numbers do you want to print out in order? "); scanf_s("%u", &k);
printf("%u fist prime numbers are: ", k);
i = 1;
prime = 2;
while (i <= k)
{
for (j = 2; j <= prime; j++)
{
if (prime % j == 0)
{
if (j == prime && prime != 2)
{
printf("%lu, ", prime);
i++;
}
prime++;
j = 2;
}
}
}
_getch();
return 0;
}
И когда я запускаю программу, она возвращает бесконечную последовательность чисел. Но если я добавлю «else j ++;» например:
for (j = 2; j <= prime; j++)
{
if (prime % j == 0)
{
if (j == prime && prime != 2)
{
printf("%lu, ", prime);
i++;
}
prime++;
j = 2;
}
else j++;
}
Тогда программа будет работать правильно. Я думаю, что это странно и не может объяснить почему?
Спасибо заранее (и извините за мой плохой английский).
Предположительно, что-то связанное с сбросом j на 2 ... – Sinkingpoint
Почему у вас есть 'j = 2;' внутри цикла? – devnull
И вы прошли через его в отладчике? – kfsone