Я изучаю C, не могли бы вы помочь мне найти ошибку в моей программе? Я перепечатал код из книги, и до сих пор не знаю, где моя ошибка. Я попытался использовать https://www.diffchecker.com/diff, но я не вижу никакой логической разницы. Я сдаюсь. Не могли бы вы мне помочь?Пожалуйста, помогите мне найти ошибку - программа, которая показывает простые числа
Мой код:
//ex7_9.c
#include <stdio.h>
#include <stdbool.h>
int main(void){
int num;
int limit;
int div;
bool isPrime;
printf("Please insert your number: ");
while((scanf("%d", &limit) == 1) && limit > 0){
if(limit > 1)
printf("Here are prime numbers up to %d limit\n", limit);
else
printf("Change limit - to bigger than one\n");
for(num=2; num <= limit; num++){
for(div=2, isPrime=true; (div*div) <=num; div++){
if(num % div ==0)
isPrime = false;
if(isPrime)
printf("%d is prime \n",num);
}
}
}
return 0;
}
правильный код:
//ex7_9.c
#include <stdio.h>
#include <stdbool.h>
int main(void){
int limit;
int num;
int div;
bool numIsPrime;
printf("Enter a positive integer: ");
while (scanf("%d", &limit) == 1 && limit > 0){
if (limit > 1)
printf("Here are the prime numbers up through %d\n", limit);
else
printf("No primes.\n");
for (num = 2; num <= limit; num++)
{
for (div = 2, numIsPrime = true; (div * div) <= num; div++)
if (num % div == 0)
numIsPrime = false;
if (numIsPrime)
printf("%d is prime.\n", num);
}
printf("Enter a positive integer (q to quit): ");
}
printf("Done!\n");
return 0;
}
результаты из моего кода:
Please insert your number: 10
Here are prime numbers up to 10 limit
5 is prime
7 is prime
9 is prime
Какая ошибка вы видите? – Amit
Я не вижу правильных результатов, это ommits 2 и 3 :( – Misiek777
Ваша проблема заключается в фигурных скобках последнего 'for'. Это означает только цикл вокруг следующего' if', а не последнего. ('If (isPrime) 'должно быть вне области' for') – Amit