Алгоритмически правильно проверять возможные факторы вплоть до квадратного корня вашей цели.
Если N - это число, которое может быть или не быть простым, если нет факторов (не считая 1) до sqrt (N), то N должно быть простым. Сам sqrt (N) вполне может быть его единственным основным фактором (например, 9, что 3 * 3).
Если мы собираемся проверить, является ли 17 простым, мы знаем, что sqrt (17) чуть выше 4. 2, 3 и 4 не делятся на 17, поэтому оно должно быть простым, так как 5 больше.
Это должно быть так, потому что 17/5 будет меньше 5 и тоже должно быть фактором, но мы знаем, что нет факторов меньше 5.
Программно, конечно, код не оптимален, так как вы бы не использовали двойные и квадратные корни, а что-то вроде (i * i <= N) </p>