кодесурса
«C ++

Упражнения на C ++: принять целое число (n) от пользователя и вывести число комбинаций, которые выражают n как сумму двух простых чисел

script1adsense2code
script1adsense3code

C ++ Basic: упражнение 76 с решением

Четное число 4 или более может быть представлено суммой двух простых чисел. Это называется ожиданием Гольдбаха, и подтверждается, что оно вычисляется с помощью компьютерного расчета до значительно большего числа. Например, 10 может быть выражено как сумма двух простых чисел 7 + 3, 5 + 5.
Напишите программу на C ++, которая принимает целое число (n) от пользователя и выводит количество комбинаций, которые выражают n как сумму двух простых чисел.
Примечание: n должно быть больше или равно 4 и меньше или равно 50 000.

Пример решения :

Код C ++:

#include <iostream>
using namespace std;
 
int search(const int array[], int high, int key)
{
    int low_num = 0;
    int mid_num;
    int n=-1;
    while(low_num<=high){
        mid_num = (low_num + high)/2;
        if( array[mid_num] == key ){
            n = mid_num;
            break;
        }else if ( array[mid_num] < key){
            low_num = mid_num + 1;
        }else{
            high = mid_num -1;
        }
    }
    return(n);
}
 
int main(void){
    int prime_num[5136];
    prime_num[1] = 2;
    prime_num[2] = 3;
    int ptr=3;
    for(int num=5; num<=50000; num++){
        bool f = false;
        for(int i=1; i<ptr; i++){
            if(prime_num[i]*prime_num[i] > num){
                break;
            }
            if(num%prime_num[i]==0) {
                f = true;
                break;
            }
        }
        if(!f) {
            prime_num[ptr++] = num;
        }
    }
    prime_num[ptr] = 50001;
    int n;
    while(cin >> n){
        if(!n) break;
        int count = 0;
        if(n%2==0){
            for(int i=1; prime_num[i] <= n/2; i++){
                    if(search(prime_num,ptr,n-prime_num[i])!=-1) count++;
            }
        }else{
            if(search(prime_num,ptr,n-2)!=-1) count++;
        }
        cout << "Input number: " << n;
        cout << "\nNumber of combinations: " << count << endl;
    }
    return 0;
}

Пример вывода:

 Введите номер: 7
Количество комбинаций: 1
Введите номер: 85
Количество комбинаций: 1
Входной номер: 900
Количество комбинаций: 48
Введите номер: 1505
Количество комбинаций: 0

Блок - схема:

«Блок-схема:
«Блок-схема:

Редактор кода C ++:

Внесите свой код и комментарии через Disqus.

Предыдущий: Напишите программу на C ++ для вычисления суммы указанного числа простых чисел.
Далее: Напишите программу на C ++, чтобы проверить, являются ли две прямые линии AB и CD ортогональными или нет.

Каков уровень сложности этого упражнения?

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code