Простое число Логика, n/2 условие в цикле

Следующий код для простого числа. Я хочу знать, почему мы используем i<=n/2 состояние в цикле.

Программа C:

#include <stdio.h>
int main()
{
int n, i, flag = 0;

printf("Enter a positive integer: ");
scanf("%d",&n);

for(i=2; i<=n/2; ++i)
{
    // condition for nonprime number
    if(n%i==0)
    {
        flag=1;
        break;
    }
}

if (flag==0)
    printf("%d is a prime number.",n);
else
    printf("%d is not a prime number.",n);

return 0;
}

2 ответа

Решение

Хотя это программа на Си. Но логика простых чисел для C и Java будет одинаковой

простое число
Каждое натуральное число, которое делится только на 1 и само является простым. Также 2 - это первое простое число.

Например, мы хотим проверить, является ли число 100 простым числом или нет. мы можем сделать пробное деление, чтобы проверить простоту 100.

Давайте посмотрим на все делители 100:

2, 4, 5, 10, 20, 25, 50

Здесь мы видим, что наибольшим фактором является 100/2 = 50. Это верно для всех n: все делители меньше или равны n / 2.

Так что здесь условие i<=n/2 является правильным. Так как нам нужно тестировать делители только до n / 2.

Пожалуйста, проверьте ссылку Wiki для более подробной информации https://en.wikipedia.org/wiki/Primality_test

Второй пример

Аналогично, для 11 вы должны проверить все целые числа меньше 5,5, то есть 1, 2, 3, 4 и 5.

Чтобы найти число простое, почему проверка до п / 2 лучше. В чем причина избегания чисел во второй половине дня?

Наибольшее значение для любого числа n должно быть <= n/2, поэтому нет необходимости проверять большие числа

Другие вопросы по тегам