Problem 8. Prime Number Check
Здравейте, имам следния въпрос от домашното на тема "Operators Expressions and Statements" по задача "Prime Number Check".
В условието пише: Напишете израз който да проверява ако дадено положително число е просто. В примерите с числата има отрицателно число, нарочно ли е сложено и отговора трябва да е false за него, заради условието на задачата (само положителни числа)?
Благодаря предварително.
Здравей,
Тествах ти кода с 51, и ми даде false :) Но ще даде грешен резултат при малко по-големи числа (примерно за 77 ще даде true, тъй като числото се дели само на 7 и 11 (освен на 1 и себе си) и нямаш проверка за тях).
Не знам другите как са го решавали, но в момента ми хрумва да направиш цикъл, в който проверяваш дали числото се дели на някое от числата между 1 и корен квадратен от себе си. Ако не намериш такъв делител (и числото ти е положително), значи е просто число.
А защо използваме точно корен квадратен за горната граница? Защото всяко число, което не е просто, може да се сведе до два множителя: a = b*c (b > 1 и c >1, тъй като говорим за непросто число). Нека приемем, че b > sqrt(a) и c > sqrt(a), от това следва b*c > sqrt(a^2), т.е. b*c > a, а това не е възможно. От това следва, че b <= Math.sqrt(a) или c <= Math.sqrt(a). За да докажем, че числото не е просто, ни стига да намерим по-малкия делител (един е достатъчен).