Алгоритм на проверку простоты суммы двух положительных чисел - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Добры день. Передо мной стоит задача написать программу: вводится ряд положительных чисел. Необходимо найти все пары, сумма которых является простым числом. Первым делом я записал все числа в массив. Для проверки простоты я пользовался следующим алгоритмом:
for(i=0; i<l;i++)
        for(j=1;j<=l;j++)
            for(k=2;k<(nplus[i]+nplus[j]);k++)
                {if (((nplus[i]+nplus[j])%k)==0)
                    {a++;break;}
l -изначально введенное количество положительных чисел. Немного поясню. Я хотел сделать, чтобы первый цикл пробегал все значения массива от нулевого до предпоследнего, а второй цикл чтобы к каждому такому значению прибавлял все следующие по одному, а третий цикл чтобы проверял делители для каждой полученной пары, и как только остаток от деления равнялся был нулю, он прерывался и записывал значение в счетчик, который показывает, что данная сумма не простая. Но к сожалению, реализация не работает. Может быть ошибка в моих рассуждениях, может быть в реализации, я понять не могу =( Прошу ваше помощи, заранее спасибо

Решение задачи: «Алгоритм на проверку простоты суммы двух положительных чисел»

textual
Листинг программы
int prime(int a) {
    int b = sqrt((double) a);  // Чтобы не вычислять в каждой иттерации
    if (a==2) return 1;
    if (a==1 || a%2==0)  return 0;
    for (int i=3; i<sqrt((float)a); i+=2)
        if (a/i==0) return 0;
    return 1;
}
main()
{
for(i=0; i<m;i++)  // заменил l на m т.к. анлийская мелкая эл - штука совершенно неразборчивая
   for(j=i+1;j<m;j++)  // j=i+1,  j<m 
      if (prime(nplus[i] + nplus[j]) count++;

Объяснение кода листинга программы

Код представляет собой функцию prime(int a), которая проверяет, является ли число a простым, и функцию main(), которая использует функцию prime() для проверки суммы двух чисел из массива nplus. Вот список действий, выполняемых в коде:

  1. Инициализация переменной b в функции prime() значением квадратного корня из числа a.
  2. Проверка базовых случаев: если a равно 2, возвращается 1 (число простое). Если a равно 1 или является четным числом, возвращается 0 (число не простое).
  3. Инициализация переменной i в функции main() значением 0.
  4. Цикл for в функции main(), который выполняется до тех пор, пока переменная i меньше m.
  5. Внутри цикла for в функции main() инициализируется переменная j значением i+1.
  6. Цикл for в функции main() выполняется до тех пор, пока переменная j меньше m, и выполняется проверка функции prime() для суммы nplus[i] и nplus[j].
  7. Если функция prime() возвращает 1, увеличивается счетчик count.
  8. По завершении циклов, функция main() завершается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.667 из 5
Похожие ответы