Я хочу написать код, который принимает любое положительное, четное число (больше 2) и дает мне наименьшую пару простых чисел, которые суммируются до этого числа. Мне нужна эта программа для обработки любого целого числа длиной до 9 цифр.Теория Гольдбаха в C
Моя цель состоит в том, чтобы сделать что-то, что выглядит следующим образом:
Please enter a positive even integer (greater than 2) : 10 The first primes adding : 3+7=10. Please enter a positive even integer (greater than 2) : 160 The first primes adding : 3+157=160. Please enter a positive even integer (greater than 2) : 18456 The first primes adding : 5+18451=18456.
Я не хочу, чтобы использовать любую библиотеку, кроме stdio.h. Я не хочу использовать массивы, строки или что-нибудь кроме основного инструментария: scanf, printf, for, while, do-while, if, else if, break, continue и базовые операторы (<,>, ==, = +,! =,%, *,/и т. д.). Пожалуйста, никаких других функций, особенно is_prime.
Я знаю, как ограничить ввод в соответствии с моими потребностями, чтобы он проходил цикл, пока не будет задана действительная запись.
Так что теперь я пытаюсь выяснить алгоритм.
Я думал о запуске время цикла, как-то вроде этого:
#include <stdio.h>
long first, second, sum, goldbach, min;
long a,b,i,k; //indices
int main(){
while (1){
printf("Please enter a positive integer :\n");
scanf("%ld",&goldbach);
if ((goldbach>2)&&((goldbach%2)==0)) break;
else printf("Wrong input, ");
}
while (sum!=goldbach){
for (a=3;a<goldbach;a=(a+2))
for (i=2;(goldbach-a)%i;i++)
first = a;
for (b=5;b<goldbach;b=(b+2))
for (k=2;(goldbach-b)%k;k++)
sum = first + second;
}
}
Можете ли вы дать нам веские основания для таких ограничений. Звучит как домашнее задание или другие типы правил, налагаемые третьей стороной. –
Массивы гораздо более простые, чем 'stdio.h'. Любое решение, которое вы придумываете, не учитывает массивы, будет ужасно неэффективным. – Dave
@JensGustedt да, я забыл упомянуть, что это часть упражнения. – nofe