Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 07.11.2017
Сообщений: 15

Найти n-ое по счёту составное число

07.11.2017, 20:13. Показов 1506. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите, пожалуйста, написать программу, которая должна найти n-ое по счёту составное число[/B][/B]. Если я правильно понимаю, то эта программа должна вывести на каком месте по счёту стоит составное число, но понятия не имею как написать программу
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.11.2017, 20:13
Ответы с готовыми решениями:

Найти наименьшее составное псевдопростое число по основанию 5
найти наименьшее составное псевдопростое число по основанию 5

Найти третье от начала составное число в заданном диапазоне
Найти третье от начала составное число в заданном диапазоне. (написал, чёт не прёт) кто может подсобите. заранее спасибо!

найти наименьшее составное число типа integer, половина которого есть точный квадрат
найти наименьшее составное число типа integer, половина которого есть точный квадрат, треть - куб, 1/5 его часть - пятая степень целого...

16
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
07.11.2017, 23:08
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 <iostream>
 
using namespace std;
 
int main()
{
    int n, count = 0, num = 1;
    
    cin >> n;
 
    while (count < n)
    {
        num++;
 
        for (int i = 2; i <= sqrt(num); i++)
        {
            if (num % i == 0)
            {
                count++;
                break;
            }
        }
    }
 
    cout << num << endl;
 
    system("pause");
    return 0;
}
0
0 / 0 / 0
Регистрация: 07.11.2017
Сообщений: 15
12.11.2017, 21:53  [ТС]
QuakerRUS, я ввела эту программу она работает, но можно объяснить такой момент, когда я ввожу, к примеру, цифру 4 выводит 9. Почему так?
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
12.11.2017, 23:36
_frisk_hard, здравствуйте! Дело в том, что составное число - это число которое не является простым и не равно единице. Вот начальный список простых чисел (в скобках находятся составные числа) :
2 3 (4) 5 (6) 7 (8) (9) (10) 11 13 17 19 ...

Нетрудно заметить, что четвертое составное число - это 9 (девятка). Надеюсь был вам полезен.

Добавлено через 4 минуты
_frisk_hard, вот еще вариант с использованием массива и функции проверки на простоту:

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
#include <bits/stdc++.h>
 
using namespace std;
 
bool IsPrime(int N)
{
    for (int i = 2; i <= sqrt(N); i++)
        if (N % i == 0)
            return false;
    return true;
}
 
int main()
{
    const int M = 1000;
    int N, k;
    int* arr = new int[M];
    k = 0;
    for (int i = 2; i < M; i++)
    {
        if (!IsPrime(i))
            arr[k++] = i;
    }
    cout << "Enter a number:" << "\n";
    cout << "N = ";
    cin >> N;
    cout << "N-th composite number: " << arr[N-1] << "\n";
    delete [] arr;
    system("pause");
    return 0;
}
0
0 / 0 / 0
Регистрация: 07.11.2017
Сообщений: 15
14.11.2017, 15:42  [ТС]
Fixer_84, спасибо большое, теперь я во всём разобралась

Добавлено через 19 часов 58 минут
Fixer_84, а можно ещё спросить как правильно записать корень из num циклом, просто у меня не получается правильный ответ тогда...
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
14.11.2017, 17:48
_frisk_hard, здравствуйте! Никогда раньше корень через цикл не находил, но узнал как это делается:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <bits/stdc++.h>
 
using namespace std;
 
int main()
{
    double x, num;
    cout << "Enter a number:" << "\n";
    cout << "num = ";
    cin >> num;
    x = 1;
    while (abs(x * x - num) >= 0.001)
    {
        x = ((num / x) + x) / 2;
    }
    cout << "Square root: " << x << "\n";
    system("pause");
    return 0;
}
P. S. Корень, также, можно посчитать разложением функции в ряд Тейлора, используя деление столбиком или просто при помощи функции pow().
0
0 / 0 / 0
Регистрация: 07.11.2017
Сообщений: 15
15.11.2017, 22:59  [ТС]
Fixer_84, а можно сделать так k=1; while (k*k!=num) {k++}
но при таком раскладе программа зацикливается и мне нужно добавить ещё и для таких корней, где не вычисляется целый корень, т.е. мне нужно добавить какой-то цикл, чтобы, к примеру,при num равном 5 (где корень из 5 равен 2,23...), он переменную k прибавлял до 2......надеюсь мысль понятна.....
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
16.11.2017, 13:25
_frisk_hard, здравствуйте! Я не совсем понимаю, что вы хотите сделать. Не могли бы вы, пожалуйста, более четко и полно сформулировать вопрос?
0
0 / 0 / 0
Регистрация: 07.11.2017
Сообщений: 15
16.11.2017, 16:28  [ТС]
Fixer_84, мне нужно написать цикл, который вычисляет корень числа, но ведь существуют и такие корни, где не получается целого ответа, как к примеру корень из 5, и надо чтобы этот цикл в таких корнях выделял лишь целую часть ответа, как к примеру корень из 5 равен 2,23... - целая часть будет 2 и так же с другими корнями
0
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
16.11.2017, 18:04
_frisk_hard, так работать не будет, так как пропустите значение num при увеличении.

C++
1
k=1; while (k*k!=num) {k++}
Так правильно.

C++
1
k=1; while (k*k<num) {k++;}
Если вас смущает корень в моей программе, можно поправить 15ю строчку.

C++
1
for (int i = 2; i * i <= num; i++)
1
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
16.11.2017, 18:59
Цитата Сообщение от _frisk_hard Посмотреть сообщение
надо чтобы этот цикл в таких корнях выделял лишь целую часть ответа
C++
1
2
3
for(k=1; k*k < num; k++)
;
if (k*k > num) k--;
Добавлено через 2 минуты
_frisk_hard, Но вообще-то это уже другая задача, и по-хорошему ее надо в новую тему.
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
16.11.2017, 19:09
Цитата Сообщение от _frisk_hard Посмотреть сообщение
мне нужно написать цикл, который вычисляет корень числа, но ведь существуют и такие корни, где не получается целого ответа, как к примеру корень из 5, и надо чтобы этот цикл в таких корнях выделял лишь целую часть ответа, как к примеру корень из 5 равен 2,23... - целая часть будет 2 и так же с другими корнями
Тогда приведем x в 16 строчке (пост №6 и здесь) к целому виду используя приведение типов (type cast). Будет так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <bits/stdc++.h>
 
using namespace std;
 
int main()
{
    double x, num;
    cout << "Enter a number:" << "\n";
    cout << "num = ";
    cin >> num;
    x = 1;
    while (abs(x * x - num) >= 0.001)
    {
        x = ((num / x) + x) / 2;
    }
    cout << "Square root: " << (int)x << "\n";
    system("pause");
    return 0;
}
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
16.11.2017, 19:15
Fixer_84, интересно, что у вас будет получаться при вводе точных квадратов? 16, 25, 49, 100, 121 ...
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
16.11.2017, 19:22
Байт, здравствуйте! Спасибо за ваше замечание. Может быть, я не понял суть вопроса, но меня попросили вычислить квадратный корень из числа с помощью цикла. Я никогда этого не делал сам и благополучно нашел код в сети интернет. Код, кажется, рабочий. Один такой цикл вычисляет квадратный корень из числа. Далее меня попросили округлить результат такого цикла (квадратный корень из числа) до целого, что я и сделал с помощью приведения типов.

Цитата Сообщение от Байт Посмотреть сообщение
интересно, что у вас будет получаться при вводе точных квадратов? 16, 25, 49, 100, 121 ...
Для этих чисел корень вычисляется как целый квадратный корень из числа.
1
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
16.11.2017, 20:03
Fixer_84, да, интересно... Я тоже проверил ваш код, он и правда выдает точные квадраты. Это значит, что ваша формула (или Герона) https://ru.wikipedia.org/wiki/... 0%BD%D0%B0
вычисляет корень с избытком. Что не сразу очевидно. Хотя доказать это чисто математически, видимо, не сложно. Но для полной уверенности - нужно.
Вот поэтому я немножко недолюбливаю перевод чисто целочисленных задач в область чисел с плавающей точкой. Ибо никогда не знаешь, что от этих функций ждать...В какую сторону она их будет округлять. Ведь действительные числа, будучи сами по себе бесконечными, представляются типом double в конечном виде, а значит с некоторой погрешностью (ошибкой). А сравнивать их на точное равенство вообще нельзя!
И хотя и извиняюсь за свое занудство в этом вопросе, но поверьте - оно оправдано!
1
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
17.11.2017, 22:14
Байт, я очень благодарен вам за ваши подсказки, но думать об этом для меня пока очень сложно, так как не всегда хватает опыта и времени. Пока я на форуме стараюсь ухватить самое важное и учитывать в дальнейшем (включая все ваши замечания).
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
18.11.2017, 00:26
Цитата Сообщение от Fixer_84 Посмотреть сообщение
благодарен вам за ваши подсказки, но думать об этом для меня пока очень сложно,
А я вас заставляю? Форум - площадь. (по грецки) Вы что-то говорите, я иду мимо, вставляю свои соображения по этому поводу, ни вас, ни меня это ни к чему не обязывает. Если пригодится в дальнейшем - очень хорошо! Не пригодится - ну и ладно. Может, пригодится кому-то еще. Ведь площадь наша просматривается со всех поисковых систем!
А вы пока учитесь кодировать? Очень хорошо! Инструменты надо изучать, бензопилу надо по-началу научиться заводить с первого рывка и делать ей простые распилы. Но когда вы подойдете к стволу в 6 обхватов, надо уже чуть-чуть подумать...
Но вообще-то я хотел пожелать вам Удачи!
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.11.2017, 00:26
Помогаю со студенческими работами здесь

Найти третье по счёту отрицательное число в массиве
1.Найти третье по счёту отрицательное число в массиве 2.В отсортированный массив вставить несколько чисел так, чтобы не нарушалась...

По заданному числу N найти N-ое по счету число в получившейся последовательности
Антон Деревенский записал ряд натуральных чисел в порядке возрастания: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 … и...

Необходимо по заданному N найти N-ое по счету число в получившейся последовательности
Вася записал ряд натуральных чисел в порядке возрастания: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23...

Найти k по счету простое число (первым простым числом является 2)
Найти k-ое по счету простое число (первым простым числом является 2).

Составьте программу, отыскивающую наименьшее натуральное число P, при котором P^2+P+41-составное число
Составьте программу, отыскивающую наименьшее натуральное число P, при котором P^2+P+41-составное число


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Ниже машинный перевод статьи The Thinkpad X220 Tablet is the best budget school laptop period . Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы,. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru