Написание параллельной программы определяющей, сколько целых чисел, имеющих в качестве простых сомножителей 2, 3 или 5, лежит в диапазоне от M до N, страница 2

                                    printf("\n*Количество элементов, удовлетворяющих условию: ");

                                    printf("%2.2f", MPI_COMM_WORLD.summa);

                                    putchar('\n');

                        }

                        break;

            }

}

/////////////////////////////////////////////////////////////////////////////////////////////////

void do_server()//Функция, запрашивающая исходный диапазон. Запускается на

{                                             //машине, инициировавшей вычислительную задачу.

            int i, j, N, K;               //Эта машина становится “главной”

            timeb begin;

            ftime(&begin);

            MPI_COMM_WORLD.time_sec = begin.time;

            MPI_COMM_WORLD.time_mili = begin.millitm;

            printf("*Введите нижнюю границу N: ");

            scanf("%d", &N);

            printf("*Введите верхнюю границу K: ");

            scanf("%d", &K);

            MPI_COMM_WORLD.N = N;

           MPI_COMM_WORLD.K = K;         

           MPI_COMM_WORLD.summa = 0;

            post_task();

}

/////////////////////////////////////////////////////////////////////////////////////////////////

void do_action()//Установка сессий между ветвями процесса, распределенными в кластере

{

             movedata(ncb_segments[ncb_tail], ncb_offsets[ncb_tail],

                        FP_SEG(&MPI_COMM_WORLD.temp_ncb),

                        FP_OFF(&MPI_COMM_WORLD.temp_ncb), sizeof(NCB));

            ncb_tail++;

            if (ncb_tail == 21)

                         ncb_tail = 0;

            switch (MPI_COMM_WORLD.temp_ncb.NCB_COMMAND) {

            case LISTEN:

                                    char call_name[16], *temp;

                                    strcpy(call_name, MPI_COMM_WORLD.temp_ncb.NCB_CALLNAME);

                                    listen(MPI_COMM_WORLD, "*", MPI_COMM_WORLD.name, post_handle, 20, 20);

                                    if (!strstr(call_name, "Point№")) {

                                     printf("Неверный вызов от %s\n",call_name);

                                     hangup(MPI_COMM_WORLD, MPI_COMM_WORLD.temp_ncb.NCB_LSN);

                                     return;

                                    }

                                    printf("Отвечаю на вызов ветви %s, установлена сессия %d\n", strip_name(call_name), MPI_COMM_WORLD.temp_ncb.NCB_LSN);

                                    break;

            case CALL:  if (!MPI_COMM_WORLD.temp_ncb.NCB_CMD_CPLT)

                                               printf("Вызов принят, номер сесии %d\n",MPI_COMM_WORLD.temp_ncb.NCB_LSN);

                                    else

                                               printf("Ветвь Point№%d не отвечает, код = %.2X\n", MPI_COMM_WORLD.cur, MPI_COMM_WORLD.temp_ncb.NCB_CMD_CPLT);