Форум программистов, компьютерный форум CyberForum.ru

Циклы [Pellec c] - C++

Восстановить пароль Регистрация
 
napalm2005
1 / 1 / 0
Регистрация: 08.12.2010
Сообщений: 40
08.12.2010, 16:24     Циклы [Pellec c] #1
В общем ситуация такова:
Задано подмножество натуральных чисел от 1 до N (вводится пользователем, N < 100000). Нужно найти число пар элементов из этого подмножества таких, что их сумма является простым числом. Например: (1,2), сумма равна 3. При этом пары, состоящие из одних и тех же элементов считать за одну пару. Например: (1,2) и (2,1).
Не могу понять каким образом осуществить это с помощью циклов.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2010, 16:24     Циклы [Pellec c]
Посмотрите здесь:

C++ Циклы
циклы for, while C++
C++ циклы
C++ циклы
Циклы WHILE, DO-WHILE. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
08.12.2010, 19:41     Циклы [Pellec c] #2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <stdio.h>
#include <math.h>
int simp(int n)
{
    if(n!=2 && n%2==0)
        return 0;        
    for(int i=3; i<=(int)sqrt((double)n); i+=2)
       if(n%i==0)
           return 0;
    return 1;
}
int main()
{
    int N;
    scanf("%d", &N);
    int col=0;
    for(int i=2; i<N*2; i++)
        if(simp(i)==1)
        {
            if(i<=N+1)
                col+=i/2;
            else
                col+=i/2-(i-N-1);
        }
    printf("%d", col);
    return 0;
}
napalm2005
1 / 1 / 0
Регистрация: 08.12.2010
Сообщений: 40
08.12.2010, 20:23  [ТС]     Циклы [Pellec c] #3
valeriikozlov, эх спасибо тебе. А вот только мы функций не проходили еще, поэтому извеняюсь за отобранное время.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
08.12.2010, 21:14     Циклы [Pellec c] #4
Цитата Сообщение от napalm2005 Посмотреть сообщение
А вот только мы функций не проходили еще
Ничего страшного, пройдете. Вот без функций (правда я не понял о каких функциях идет речь - об int simp(int n) или sqrt(), убрал обе на всякий случай):
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <stdio.h>
 
int main()
{
        int N;
        scanf("%d", &N);
        int col=0;
        for(int i=2; i<N*2; i++)
        {
            int fl=1;
            if(i!=2 && i%2==0)
                fl=0;
            for(int j=3; fl==1 && j<i/2; j+=2)
                if(i%j==0)
                    fl=0;
            if(fl==1)
            {
                if(i<=N+1)
                    col+=i/2;
                else
                    col+=i/2-(i-N-1);
            }
        }
        printf("%d", col);
        return 0;
}
napalm2005
1 / 1 / 0
Регистрация: 08.12.2010
Сообщений: 40
08.12.2010, 23:48  [ТС]     Циклы [Pellec c] #5
valeriikozlov, просто ситуация такова, что мы работаем с консольным приложением, и используем уже его "скелет":

#include <stdio.h>


int main(int argc, char *argv[])
{

return 0;
}


В котором, если я правильно понимаю используется только одна функция. Да и я еще дурак, не стал описывать, как я пытался это задание сделать.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
08.12.2010, 23:55     Циклы [Pellec c] #6
Тогда так:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <stdio.h>
 
 
int main(int argc, char *argv[])
{
        int N;
        scanf("%d", &N);
        int col=0;
        for(int i=2; i<N*2; i++)
                {
                        int fl=1;
                        if(i!=2 && i%2==0)
                                fl=0;
                        for(int j=3; fl==1 && j<i/2; j+=2)
                                if(i%j==0)
                                        fl=0;
            if(fl==1)
                        {
                                if(i<=N+1)
                                        col+=i/2;
                                else
                                        col+=i/2-(i-N-1);
                        }
                }
        printf("%d", col);
return 0;
}
Yandex
Объявления
08.12.2010, 23:55     Циклы [Pellec c]
Ответ Создать тему
Опции темы

Текущее время: 05:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru