Непонятная ситуация с if и типом _Bool - C (СИ)
Формулировка задачи:
Программа должна выводить делители, поделив на которые число остается без остатка, если число простое то выводится сообщение об этом и продолжается ввод чисел для вычисления делителей.Проблема в том, что когда я ввожу не простое число, т.е без делителей кроме себя и 1, то прога выводит сообщение что это простое число пока счетчик цикла не выдаст значение больше квадрата числа, то есть если ввожу 139, то компилятор выдает "139 простое число" 10 раз, а надо что бы один. Вот код. И еще, это норма что bool поддерживается без заголовочного файла <stdbool.h>, а то когда я его прописываю компил выдает ошибку, что такого в помине не знает.
#include <stdio.h> int main(void) { long num; long div; bool numisprime; printf("Enet simple num for analize\n"); while(scanf_s("%ld", &num) == 1) for(div = 2, numisprime = true; (div * div) <= num; div++) { if(num % div == 0) { if((div * div) != num) printf("%ld divided on %ld and %d\n", num, div, num / div); else printf("%ld divided on %ld\n", num, div); numisprime = false; } if(numisprime) printf("%ld prime num\n", num); } return 0; }
Решение задачи: «Непонятная ситуация с if и типом _Bool»
textual
Листинг программы
#include <stdio.h> int main(void) { long num, div; int numisprime; printf("Enet simple num for analize\n"); while(scanf("%ld", &num) == 1) { for(div = 2, numisprime=1; (div * div) <= num; div++) { if(num % div == 0) { printf("%ld divided on %ld\n", num, div); numisprime = 0; } } if(numisprime) printf("%ld prime num\n", num); } return 0; }
Объяснение кода листинга программы
В этом коде проверяется, является ли введенное число простым. Вот список действий:
- Ввод числа с клавиатуры.
- Проверка, является ли число простым. Для этого используется цикл, который проверяет, делится ли число на какое-либо из чисел от 2 до квадратного корня из введенного числа.
- Если число делится на какое-либо из этих чисел без остатка, оно не является простым, и на экран выводится сообщение о том, на какое число оно делится.
- Если число не делится ни на одно из чисел от 2 до квадратного корня из введенного числа, оно является простым, и на экран выводится сообщение о том, что это простое число.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д