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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
#1

МНОЖИТЕЛИ - C++

18.11.2010, 16:30. Просмотров 1634. Ответов 26
Метки нет (Все метки)

Какое минимальное число можно представить как произведение AxB ровно K способами.
AxB и ВxА считаются одним способом. К <= 50.
Пример:
вводится число К:
4
ответ:
24
1*24; 2*12; 3*8; 4*6; -----> 4 способа

Добавлено через 4 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
 
int main()
{
   int n = 1; // с какого числа начинаем
   int kF;    //найденое количество делителей
   int k;
   cin >> k; //количество способов
   while (1)
   {
      int i;
      kF = 0;
      for (i = 1; (i*i) <= n; i++)
            if (n%i == 0) kF++;   //находим делители
      if (kF == k) {cout << n << endl; break;} //если количество
      // делителей совпадает с нужным - выходим из цикла
      n++; // иначе переходим к следующему числу
   }
   cout << n << endl;
   return 0;
}
вот такое написал я ...
но для чисел К =37, 46, 47, 31 - решение найти не удалось
1
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.11.2010, 16:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос МНОЖИТЕЛИ (C++):

Множители - C++
Здравствуйте! Друзья, помогите пожалуйста сделать не очень сложную ( для вас задачку) буду очень признателен ! Огромное спасибо! Дано...

Множители - C++
Дано количество способов разложить число на множители. Нужно узнать это число (наименьшее из них). Я использовал перебор чисел, для каждого...

Протые множители - C++
Помогите решить задачу Задача: разложить данное число на простые множители

Разложить на простые множители - C++
разложить целое число на простые множители (код на си)

Разложение числа на множители - C++
var s1,s2,n: longint; f: integer; begin write('vvedite natural chislo '); readln(n); f:=0; s1:=1; ...

Разложение в простые множители - C++
Дано натуральное число n. Требуется найти его разложение на простые множители. Формат выходных данных Требуется вывести строго...

26
Хохол
Эксперт С++
475 / 443 / 13
Регистрация: 20.11.2009
Сообщений: 1,292
18.11.2010, 16:37 #2
Может потому что таких чисел не существует или они слишком большие?
0
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
18.11.2010, 16:40  [ТС] #3
Цитата Сообщение от Хохол Посмотреть сообщение
или они слишком большие?
в смысле 31!, 37!, 46!, 47! соответственно?
0
Хохол
Эксперт С++
475 / 443 / 13
Регистрация: 20.11.2009
Сообщений: 1,292
18.11.2010, 16:42 #4
Нет, с чего бы. Просто очень большие. Или нет их вовсе.
0
valeriikozlov
Эксперт С++
4673 / 2499 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
18.11.2010, 16:43 #5
Mayonez, Все просто:
Если задано К, то что бы найти
минимальное число
, то нужно перемножить первые K-1 простые числа, это и будет ответ.
Нет, я свой ответ признаю ошибочным.
1
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
18.11.2010, 16:45  [ТС] #6
да, спасибо нашёл! Ответ valeriikozlov верный тут почитать
0
valeriikozlov
Эксперт С++
4673 / 2499 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
18.11.2010, 16:51 #7
Mayonez, Не совсем верный мой был ответ. Но в голове крутится...
0
easybudda
Модератор
Эксперт CЭксперт С++
9695 / 5645 / 963
Регистрация: 25.07.2009
Сообщений: 10,850
18.11.2010, 22:40 #8
Цитата Сообщение от Mayonez Посмотреть сообщение
в смысле 31!, 37!, 46!, 47! соответственно?
Абсолютно верно! Самое первое, что в голову приходит - факториал k. Гарантированно разделится на все числа от k до единицы. Но 50! слишком большое число...
0
Хохол
Эксперт С++
475 / 443 / 13
Регистрация: 20.11.2009
Сообщений: 1,292
18.11.2010, 22:55 #9
easybudda, надо ровно k способами. С факториалами будет слишком много способов.
0
easybudda
Модератор
Эксперт CЭксперт С++
9695 / 5645 / 963
Регистрация: 25.07.2009
Сообщений: 10,850
19.11.2010, 01:05 #10
вот так считает до 24 включительно
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
33
34
35
36
37
38
39
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
 
int test(uint64_t num, uint64_t div){
    if ( ! div )
        return 0;
    while ( div )
        if ( num % div-- )
            return 0;
    return 1;
}
 
void dump(uint64_t num, uint64_t div){
    uint64_t i;
    for ( i = 1; i <= div; ++i )
        printf("%llu * %llu = %llu\n", i, num / i, num);
}
 
#define TOP 1000000000LLU
 
int main(void){
    uint64_t num, k, m;
    
    printf("k = ");
    scanf("%llu", &k);
    
    for ( num = k * k, m = 0; m <= TOP; ++m ){
        if ( test(num + k * m, k) ){
            dump(num + k * m, k);
            break;
        }
    }
    
    if ( m > TOP )
        printf("Number too big!\n");
    
    return 0;
}
1
valeriikozlov
Эксперт С++
4673 / 2499 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
19.11.2010, 08:21 #11
Цитата Сообщение от Хохол Посмотреть сообщение
Или нет их вовсе.
Такие числа точно существуют. Вот пример (я иду по степеням числа 2):
Число 2, К=1 (1*2)
Число 4, К=2 (1*4, 2*2)
Число 8, К=2 (1*8, 2*4)
Число 16, К=3 (1*16, 2*8, 4*4)
Число 32, К=3 (1*32, 2*16, 4*8)
Число 64, К=4 (1*64, 2*32, 4*16, 8*8)
Число 128, К=4 (1*128, 2*64, 4*32, 8*16)
Число 256, К=5 (1*256, 2*128, 4*64, 8*32, 16*16)
и т.д.
Получается что умножая на 4 любую степень 2, мы увеличиваем К на 1. Таким образом мы сможем получить и К =37, 46, 47, 31. Другой вопрос являются ли они минимальными? Но то что такие числа есть это точно.
1
easybudda
Модератор
Эксперт CЭксперт С++
9695 / 5645 / 963
Регистрация: 25.07.2009
Сообщений: 10,850
19.11.2010, 08:58 #12
Цитата Сообщение от valeriikozlov Посмотреть сообщение
Другой вопрос являются ли они минимальными?
не-а!
Цитата Сообщение от valeriikozlov Посмотреть сообщение
Число 128, К=4 (1*128, 2*64, 4*32, 8*16)
При к = 4 минимальное число 24 было, немного меньше, чем 128
0
valeriikozlov
Эксперт С++
4673 / 2499 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
19.11.2010, 09:05 #13
easybudda, Я знаю, это был ответ посвященный только существованию таких чисел и не более.
0
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
22.11.2010, 18:04  [ТС] #14
так всё-таки: решение существует но очень большое число или ...??
0
valeriikozlov
Эксперт С++
4673 / 2499 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
22.11.2010, 19:35 #15
так всё-таки: решение существует но очень большое число или ...??
или решение тоже существует, но значение меньше. Если Вас все-таки интересует решение пишите в личку, подумаем вместе, я думаю решение найдем обязательно (потому что оно существует).
0
22.11.2010, 19:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2010, 19:35
Привет! Вот еще темы с ответами:

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

Разделить число на множители - C++
Нужно составить программу, в которой ты вводиш натуральное число, а она, если возможно, делит его на простые множители, тоесть 24=2*2*2*3...

Определить простые множители - C++
Задание: Составить программу определения, является ли данное число простым. Если число не является простым, то определить все его простые...

Разложить число на простые множители - C++
Дано натуральное число n. Напечатать разложение этого числа на простые множители. Реализовать два варианта: 1) каждый простой множитель...


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

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

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