Алгоритм на проверку простоты суммы двух положительных чисел - C (СИ)
Формулировка задачи:
Добры день.
Передо мной стоит задача написать программу: вводится ряд положительных чисел. Необходимо найти все пары, сумма которых является простым числом.
Первым делом я записал все числа в массив.
Для проверки простоты я пользовался следующим алгоритмом:
l -изначально введенное количество положительных чисел.
Немного поясню. Я хотел сделать, чтобы первый цикл пробегал все значения массива от нулевого до предпоследнего, а второй цикл чтобы к каждому такому значению прибавлял все следующие по одному, а третий цикл чтобы проверял делители для каждой полученной пары, и как только остаток от деления равнялся был нулю, он прерывался и записывал значение в счетчик, который показывает, что данная сумма не простая.
Но к сожалению, реализация не работает. Может быть ошибка в моих рассуждениях, может быть в реализации, я понять не могу =(
Прошу ваше помощи, заранее спасибо
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;}
Решение задачи: «Алгоритм на проверку простоты суммы двух положительных чисел»
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. Вот список действий, выполняемых в коде:
- Инициализация переменной b в функции prime() значением квадратного корня из числа a.
- Проверка базовых случаев: если a равно 2, возвращается 1 (число простое). Если a равно 1 или является четным числом, возвращается 0 (число не простое).
- Инициализация переменной i в функции main() значением 0.
- Цикл for в функции main(), который выполняется до тех пор, пока переменная i меньше m.
- Внутри цикла for в функции main() инициализируется переменная j значением i+1.
- Цикл for в функции main() выполняется до тех пор, пока переменная j меньше m, и выполняется проверка функции prime() для суммы nplus[i] и nplus[j].
- Если функция prime() возвращает 1, увеличивается счетчик count.
- По завершении циклов, функция main() завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д