Взгляните на условие l oop здесь:
for(int i=1;i<=number;i++)
С <=
, i
поднимается до number
. Таким образом, последняя проверка будет if(number%number==0)
, что всегда верно: ваша программа говорит, что 5
не является простым числом, потому что 5
, деленное на 5
, имеет остаток 0
. То же самое относится к делению числа на 1
(что также приводит к отсутствию остатка), поэтому эта проверка должна начинаться с 2
. Эта строка должна быть:
for(int i=2;i<number;i++)
Обычно i
имеет значение только от go до sqrt(number)
, поскольку никакие два числа, большие, чем умноженное root из number
, не приведут к number
.
Кроме того, если введено число 1
, вы получите два из трех возможных выходов вместо первого. Чтобы это исправить, поставьте else
перед if (flag == 1)
.