Data Type and Variables Exercises Problem 15. Fast Prime Checker - Reafactor
Здравейте,
Имам два въпроса относно задача 15. Fast Prime Checker - Refactor. Условие на задачата - Data Types and Variables - Exercises, след "поправка" на кода - http://pastebin.com/Dh77UafV. Имам два въпроса:
1. Кодът работи отлично (или роне дава 100 от 100 в Judge), но не мога да разбера защо вади "True" при curNum = 2 от първия for - цикъл и devider = 2 от втория for - цикъл? Не трябва ли да върне "False", при условие, че "2 % 2 == 0"?
2. При деклариране на булевата променлива преди първия for - цикъл, изходящият резултат се променя. Например при вход 5 (както е в примерния вход - изход в условието), изходът е:
2 -> True
3 -> True
4 -> False
5 -> True
Ако обаче булевата променлива се премести ето така:
int num = int.Parse(Console.ReadLine());
bool isPrime = true;
for (int curNum = 2; curNum <= num; curNum++)
...................,
резултатът става:
2 -> True
3 -> True
4 -> False
5 -> False
Благодаря за отговора - особено на вторият въпрос.
И все пак: "2 % 2 == 0" - това е условие да върне "false", както го прави за при curNum = 4 (4 % 2 == 0 -> False), продължавам да не разбирам защо при curNum = 2, съответно 2 % 2 == 0 (отново) -> True?? Напълно осъзнавам, че е нещо елементарно, но ....наистина не разбирам и предпочитам да питам. Извинявам се, ако дразня с въпроса.
Всъщност грешката е моя, защото не го обясних както трябва. Когато curNum е равно на 2 то дори не влиза във вторият цикъл, защото divider е равно на 2, което е по-голямо от корен от 2. И затова печати true.
:) Много благодаря.