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

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

Войти
Регистрация
Восстановить пароль
 
Relike
6 / 6 / 0
Регистрация: 24.04.2013
Сообщений: 260
#1

Сдвоенные числа - C++

02.12.2013, 20:09. Просмотров 270. Ответов 9
Метки нет (Все метки)

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
28
29
#include <cstdlib>
#include <iostream>
#include <Math.h>
using namespace std;
 
int main(int argc, char *argv[])
{
    int n, pred, tek, i, j, t = 0; 
    cout<<"Vvedite granicu diapazona : "; cin>>n;
   for (i = 2; i <= n; i++){
        for ( j = 0; j < sqrt(n) + 1; j++){
            if ( n % j == 0) {
                cout<<"i = "<<i;
                tek = i;
                t++;
                }
            }
    if(t == 2){
            if(tek - 2 == pred) {
                cout<<pred<<tek;
                t = 0;  
            }          
        }
    else pred = tek;
       }
    
    system("pause");
    return EXIT_SUCCESS;
}
Если p и q - простые числа, и справедливо что q = p + 2, то они наз-ся сдвоенные. Найти все сдвоенные числа меньшие n. Я совсем запутался в этой задаче...алгоритм нахождения простых чисел нашел на форуме. Его не понял. Кто нибудь может объяснить его, или посоветовать попроще? И помочь с задачей.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2013, 20:09
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Сдвоенные числа (C++):

Распечатать все простые сдвоенные числа меньшие заданного - C++
Здравствуйте! Помогите написать программу Если p и q - простые числа и q = p+2, то они называются простыми сдвоенными числами или...

Исключить из строки S все сдвоенные пробелы - C++
задание Дана строка S, состоящая из латинских букв, пробелов и знаков препинания, а также буквенные символы C1 и C2. Требуется: ...

Либо удваивая одиночные, либо заменяя сдвоенные одним символом, привести строку к заданному виду - C++
Помогите решить эту задачу, я написал решение, но оно получилось огромным (73 строчки), непонятным и страшным. Это пятая задача из...

Даны натуральные числа M, N. Поменять одну из цифр первого числа с цифрой второго числа, чтобы получившиеся числа были взаимно простыми - C++
Даны натуральные числа M, N. Поменять одну из цифр первого числа с цифрой второго числа, чтобы получившиеся числа были взаимно простыми. ...

Как написать программу-калькулятор чтобы было можно додавать 2 числа, 3 числа, 4 числа, n чисел? - C++
Как написать программу-калькулятор чтобы было можно додавать 2 числа, 3 числа, 4 числа, n чисел?

Ввести в программу строку (числа, латиница), считать только числа, записать числа в массив - C++
Нужна помощь! Срочно! Нужно ввести в программу строку (числа, латиница), считать только числа, записать числа в массив. Помогите,...

9
jurok_85
253 / 237 / 84
Регистрация: 21.02.2013
Сообщений: 564
Завершенные тесты: 1
02.12.2013, 20:50 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
using namespace std;
int simple(int n){
    for(int i=2;i<= n/2;i++) if( (n%i)==0 ) return 0;
return 1;
}
int main()
{
 
         for(int i=2;i < 100;i++){
             for (int j = i + 2; j < 100; j++){
             if(simple(i)&& simple(j)&& j == i+2)
               cout << i << " " << j << " " << endl;
             }
         }
return 0;
 
 
}
1
kazak
3057 / 2378 / 160
Регистрация: 11.03.2009
Сообщений: 5,438
Завершенные тесты: 1
02.12.2013, 20:52 #3
Цитата Сообщение от Relike Посмотреть сообщение
Кто нибудь может объяснить его, или посоветовать попроще?
Алгоритм простой, если число n не делится на числа от 1 до sqrt(n), то оно простое. Только Ваш вариант немного не корректен.
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
28
29
30
31
32
#include <iostream>
#include <math.h>
 
using namespace std;
 
int main(int argc, char *argv[])
{
   int n, pred, tek, i, j, t; 
   
   pred = 2;
   cout << "Vvedite granicu diapazona : "; 
   cin >> n;
   for (i = 3; i <= n; i++)
   {
      t = 0;
      for (j = 0; j < sqrt(i) + 1; j++)
      {
         if ( i % j == 0) 
            t = 1;
      }
      tek = i;
      if(!t)
      {
         if(tek - 2 == pred)
            cout << pred << ' ' << tek << endl;
         pred = tek;
      }
   }
 
   system("pause");
   return EXIT_SUCCESS;
}
1
Relike
6 / 6 / 0
Регистрация: 24.04.2013
Сообщений: 260
02.12.2013, 21:31  [ТС] #4
Цитата Сообщение от kazak Посмотреть сообщение
Алгоритм простой
Спасибо, но не работает. Вышибает саму консоль....
0
Байт
Эксперт C
17658 / 11696 / 1863
Регистрация: 24.12.2010
Сообщений: 23,325
02.12.2013, 21:33 #5
Цитата Сообщение от kazak Посмотреть сообщение
j < sqrt(i)
<= А то 49 будет простым Эти грабли мы уже проходили...
j=0 тоже некоторые сомнения навевает... Как на 0 делить-то будем?

Добавлено через 1 минуту
Цитата Сообщение от Relike Посмотреть сообщение
Вышибает саму консоль....
Что и требовалось доказать.
Я правда, не очень понимаю это выражение "Вышибает САМУ консоль"
2
kazak
3057 / 2378 / 160
Регистрация: 11.03.2009
Сообщений: 5,438
Завершенные тесты: 1
02.12.2013, 21:34 #6
Про ноль забыл совсем)
Цитата Сообщение от Байт Посмотреть сообщение
<= А то 49
у ТС
Цитата Сообщение от kazak Посмотреть сообщение
j < sqrt(i) + 1
1
Relike
6 / 6 / 0
Регистрация: 24.04.2013
Сообщений: 260
02.12.2013, 21:34  [ТС] #7
Да, спасибо. Цикл от двух надо запускать.
0
Байт
Эксперт C
17658 / 11696 / 1863
Регистрация: 24.12.2010
Сообщений: 23,325
02.12.2013, 21:36 #8
Цитата Сообщение от Relike Посмотреть сообщение
Сдвоенные числа
В классической литературе называется простые числа близнецы
1
Relike
6 / 6 / 0
Регистрация: 24.04.2013
Сообщений: 260
02.12.2013, 21:41  [ТС] #9
Мы же математический факультет. Надо же выпендриться

Добавлено через 2 минуты
Ребята спасибо большое! Задача решена. Особенная благодарность Казаку и Байту!!!
1
Байт
Эксперт C
17658 / 11696 / 1863
Регистрация: 24.12.2010
Сообщений: 23,325
02.12.2013, 22:41 #10
Relike,
Ты можешь мне помочь? Эта программа выдаёт ошибку, на последнем цикле...немогу понять что не так.
..Это не принято в лучших домах - вопросы которые можно (и следует!) обсуждать на форуме, посылать в личку. Это лучший шанс не получить ответа уже ни на что. Это похоже на хватание за рукав на улице "Помогите! Сами мы не местные!" Ты вывесил вопрос? Сиди и жди. Найдутся добрые люди. А врываться к человеку в дом - это как минимум неприлично
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.12.2013, 22:41
Привет! Вот еще темы с ответами:

Поменять одну из цифр первого числа с цифрой второго числа, чтобы получившиеся числа были взаимно простыми - C++
Даны натуральные числа M, N. Поменять одну из цифр первого числа с цифрой второго числа, чтобы получившиеся числа были взаимно простыми. ...

Даны два числа. Если квадратный корень из второго числа меньше первого числа, то увличить второе число в пять раз с++ - C++
Даны два числа. Если квадратный корень из второго числа меньше первого числа, то увличить второе число в пять раз с++ Добавлено через...

Дан файл F, компонентами которого являются целые числа. Получить в файле G все нечетные числа, входящие в файл F. Числа в файле G должны следовать - C++
Помогите доздать с++) вот задание: Дан файл F, компонентами которого являются целые числа. Получить в файле G все нечетные числа, входящие ...

От данного числа N вычтем сумму цифр этого числа, от полученного числа опять вычтем сумму цифр и т.д. до тех пор, пока число положительно - C++
И опять: сколько можно? Задано натуральное число N. От данного числа вычтем сумму цифр этого числа, от полученного числа опять...


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

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

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