Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.88
INFINITIFX
0 / 0 / 0
Регистрация: 10.11.2010
Сообщений: 24
#1

Выяснить, имеются ли среди чисел n, n+1, ..., 2n близнецы, т.е. простые числа, разность между которыми равна двум. - C++

10.11.2010, 17:52. Просмотров 3461. Ответов 11
Метки нет (Все метки)

Помогите, пожалуйста, решить задачу:
дано натуральное число n. Выяснить, имеются ли среди чисел n, n+1, ..., 2n близнецы, т.е. простые числа, разность между которыми равна двум. (Определить процедуру, позволяющую распознавать простые числа.)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2010, 17:52
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Выяснить, имеются ли среди чисел n, n+1, ..., 2n близнецы, т.е. простые числа, разность между которыми равна двум. (C++):

Найти числа-близнецы: простые числа разность между которыми равна 2 - C++
Дано натуральное число n. Среди чисел n, n + 1, …, 2n найти все числа-близнецы: простые числа, разность между которыми равна 2.

Определить, есть ли среди чисел в заданном интервале близнецы (простые числа, разница между которыми = 2) - C++
Дано натуральное число n. Определить, есть ли среди чисел n, n+1, ..., 2n числа - близнецы, то есть простые числа, разница между которыми...

Выдать пары простых чисел, разность между которыми равна 4, а сами числа меньше n - C++
Дано натуральное число n>13. Выдать пары простых чисел, разность между которыми равна 4, а сами числа меньше n. Заранее большое спасибо.

Дано натуральное число n, выяснить имеются ли среди чисел n, n+1,...,2n близнецы - C++
1.Дано натуральное число n, выяснить имеются ли среди чисел n, n+1,...,2n близнецы (парные простые числа), т.е разность между которыми...

Даны действительные числа a1, ., an. (n>=2 и заранее неизвестно). Выяснить, имеются ли среди чисел a1, ., - C++
Даны действительные числа a1, ..., an. (n>=2 и заранее неизвестно). Выяснить, имеются ли среди чисел a1, ..., an совпадающие.

Даны натуральное число n, целые числа а(1),…., a(n). Выяснить, имеются ли среди чисел а(1),… a(n) совпадающие. - C++
Даны натуральное число n, целые числа а(1),…., a(n). Выяснить, имеются ли среди чисел а(1),… a(n) совпадающие. Был бы очень благодарен...

11
fasked
Эксперт С++
4972 / 2552 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
10.11.2010, 18:11 #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 <math.h>
#include <stdio.h>
 
int isprime(int n) {
        int i;
        for(i = 2; i <= n/2; ++i) {
                if(n % i == 0)
                        return 0;
        }
 
        return 1;
}
 
int main()
{
        int i, j;
        int n = 10;
 
        for(i = n; i <= 2*n; ++i) {
                if(isprime(i)) {
                        for(j = i; j <= 2*n; ++j) {
                                if(isprime(j) && j-i == 2)
                                        printf("%d - %d == 2\n", i, j);
                        }
                }
        }
}
1
INFINITIFX
0 / 0 / 0
Регистрация: 10.11.2010
Сообщений: 24
10.11.2010, 21:22  [ТС] #3
А как это будет выглядеть на С++?
0
МаксимМВ
C/C++
90 / 90 / 5
Регистрация: 01.07.2010
Сообщений: 281
10.11.2010, 21:37 #4
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 <сmath>
#include <iostream>
 
int isprime(int n) {
        int i;
        for(i = 2; i <= n/2; ++i) {
                if(n % i == 0)
                        return 0;
        }
 
        return 1;
}
 
int main()
{
        int i, j;
        int n = 10;
 
        for(i = n; i <= 2*n; ++i) {
                if(isprime(i)) {
                        for(j = i; j <= 2*n; ++j) {
                                if(isprime(j) && j-i == 2)
                                        std::cout<<i<<"-"<<j<<"==2"<<std::endl;
                        }
                }
        }
}
1
INFINITIFX
0 / 0 / 0
Регистрация: 10.11.2010
Сообщений: 24
10.11.2010, 22:21  [ТС] #5
А для чего return 1?

Добавлено через 5 минут
А как выглядит блок-схема для этой задачи?
0
fasked
Эксперт С++
4972 / 2552 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
10.11.2010, 22:51 #6
Цитата Сообщение от INFINITIFX Посмотреть сообщение
А для чего return 1?
Для С++ логичнее сделать возвращаемое значение типа bool, вместо единицы - true, вместо 0 соответственно false.
А так код валиден и для С++. Утверждать, что она написан не на Си++ нельзя
1
МаксимМВ
11.11.2010, 08:12
  #7

Не по теме:

Я просто наспех заменил printf на cout и спать пошёл)))

0
INFINITIFX
0 / 0 / 0
Регистрация: 10.11.2010
Сообщений: 24
18.11.2010, 05:08  [ТС] #8
Помогите, пожалуйста, составить блок-схему для этой задачи.
0
valeriikozlov
Эксперт С++
4680 / 2506 / 322
Регистрация: 18.08.2009
Сообщений: 4,550
18.11.2010, 06:31 #9
fasked,
МаксимМВ,
Зачем такие сложности:
for(i = n; i <= 2*n; ++i) {
if(isprime(i)) {
for(j = i; j <= 2*n; ++j) {// зачем здесь прогонять еще один цикл? Ведь предыдущее условие можно написатьтак if(isprime(i) && isprime(i+2)). И еще немного уменьшить границу для i<=2*n-2
if(isprime(j) && j-i == 2)
0
mikutu
27 / 27 / 2
Регистрация: 29.04.2009
Сообщений: 90
18.11.2010, 06:42 #10
имхо вообще цикл по j лишний

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
prost = -1;
for(i = n; i <= 2*n; i++) 
{
 if(isprime(i))
 {
   if(prost > 1)
   {
    if(i - prost == 2)
    std::cout<<prost<<"-"<<i<<"==2"<<std::endl;
   }
   prost := i;
 }
}
0
valeriikozlov
Эксперт С++
4680 / 2506 / 322
Регистрация: 18.08.2009
Сообщений: 4,550
18.11.2010, 06:56 #11
mikutu, Можно еще проще:
C++
1
2
3
4
5
6
7
8
9
10
prost = -3;
for(i = n; i <= 2*n; i++) 
{
 if(isprime(i))
 {
    if(i - prost == 2)
    std::cout<<prost<<"-"<<i<<"==2"<<std::endl;
    prost := i;
 }
}
И еще можно переделать isprime(), что бы быстрее работала, и еще можно для ускорения сделать перебор по i только нечетных чисел
0
mikutu
27 / 27 / 2
Регистрация: 29.04.2009
Сообщений: 90
18.11.2010, 07:15 #12
valeriikozlov
Согласен так меньше проверок, но имхо незнакомый ранее с этим кодом человек потратит наверно чуть больше времени понимая что к чему (0-(-3)=3, 1-(-3)=4, 2-(-3)=5, 3-2=1, 4-3=1, ...), а студент при сдаче лабы может и не сообразить что ответить на вопрос преподавателя почему такое условие и достаточно ли оно.
0
18.11.2010, 07:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.11.2010, 07:15
Привет! Вот еще темы с ответами:

Выяснить, имеется ли среди чисел n, n+1, ..., 2n близнецы - C++
Дано натуральное число n. Выяснить, имеется ли среди чисел n, n+1, ..., 2n близнецы, т.е. простые числа, разность между которыми равна...

Выяснить, имеются ли среди чисел совпадающие - C++
Используя стандартную библиотеку шаблонов STL и класс list по работе с двунаправленным списком, выполнить следующие задачи:Даны натуральное...

Выяснить, имеются ли среди чисел а1, ..., аn совпадающие - C++
Люди, помогите пожалуйста!!! Даны натуральное число n, целые числа а1, ... , аn. Выяснить, имеются ли среди чисел а1, ..., аn...

Найти в массиве пары чисел, разность между которыми минимальна - C++
Дан двум. массив целых чисел(10х10). Найти в этом массиве пары чисел, разница между которыми минимальна. Например, при вводе массива: 1...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru