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

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

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

Дано натуральное число n, выяснить имеются ли среди чисел n, n+1,...,2n близнецы C++
Выяснить, имеется ли среди чисел n, n+1, ..., 2n близнецы C++
Выяснить, имеются ли среди чисел а1, ..., аn совпадающие C++
Выяснить, имеются ли среди чисел совпадающие C++
C++ Даны натуральное число n, целые числа а(1),…., a(n). Выяснить, имеются ли среди чисел а(1),… a(n) совпадающие.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
10.11.2010, 18:11     Выяснить, имеются ли среди чисел n, n+1, ..., 2n близнецы, т.е. простые числа, разность между которыми равна двум. #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);
                        }
                }
        }
}
INFINITIFX
0 / 0 / 0
Регистрация: 10.11.2010
Сообщений: 24
10.11.2010, 21:22  [ТС]     Выяснить, имеются ли среди чисел n, n+1, ..., 2n близнецы, т.е. простые числа, разность между которыми равна двум. #3
А как это будет выглядеть на С++?
МаксимМВ
C/C++
90 / 90 / 5
Регистрация: 01.07.2010
Сообщений: 281
10.11.2010, 21:37     Выяснить, имеются ли среди чисел n, n+1, ..., 2n близнецы, т.е. простые числа, разность между которыми равна двум. #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;
                        }
                }
        }
}
INFINITIFX
0 / 0 / 0
Регистрация: 10.11.2010
Сообщений: 24
10.11.2010, 22:21  [ТС]     Выяснить, имеются ли среди чисел n, n+1, ..., 2n близнецы, т.е. простые числа, разность между которыми равна двум. #5
А для чего return 1?

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

Не по теме:

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

INFINITIFX
0 / 0 / 0
Регистрация: 10.11.2010
Сообщений: 24
18.11.2010, 05:08  [ТС]     Выяснить, имеются ли среди чисел n, n+1, ..., 2n близнецы, т.е. простые числа, разность между которыми равна двум. #8
Помогите, пожалуйста, составить блок-схему для этой задачи.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
18.11.2010, 06:31     Выяснить, имеются ли среди чисел n, n+1, ..., 2n близнецы, т.е. простые числа, разность между которыми равна двум. #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)
mikutu
26 / 26 / 2
Регистрация: 29.04.2009
Сообщений: 90
18.11.2010, 06:42     Выяснить, имеются ли среди чисел n, n+1, ..., 2n близнецы, т.е. простые числа, разность между которыми равна двум. #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;
 }
}
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
18.11.2010, 06:56     Выяснить, имеются ли среди чисел n, n+1, ..., 2n близнецы, т.е. простые числа, разность между которыми равна двум. #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 только нечетных чисел
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.11.2010, 07:15     Выяснить, имеются ли среди чисел n, n+1, ..., 2n близнецы, т.е. простые числа, разность между которыми равна двум.
Еще ссылки по теме:

Даны действительные числа a1, ., an. (n>=2 и заранее неизвестно). Выяснить, имеются ли среди чисел a1, ., C++
Выдать пары простых чисел, разность между которыми равна 4, а сами числа меньше n C++
C++ Определить, есть ли среди чисел в заданном интервале близнецы (простые числа, разница между которыми = 2)

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

Или воспользуйтесь поиском по форуму:
mikutu
26 / 26 / 2
Регистрация: 29.04.2009
Сообщений: 90
18.11.2010, 07:15     Выяснить, имеются ли среди чисел n, n+1, ..., 2n близнецы, т.е. простые числа, разность между которыми равна двум. #12
valeriikozlov
Согласен так меньше проверок, но имхо незнакомый ранее с этим кодом человек потратит наверно чуть больше времени понимая что к чему (0-(-3)=3, 1-(-3)=4, 2-(-3)=5, 3-2=1, 4-3=1, ...), а студент при сдаче лабы может и не сообразить что ответить на вопрос преподавателя почему такое условие и достаточно ли оно.
Yandex
Объявления
18.11.2010, 07:15     Выяснить, имеются ли среди чисел n, n+1, ..., 2n близнецы, т.е. простые числа, разность между которыми равна двум.
Ответ Создать тему
Опции темы

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