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

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

Войти
Регистрация
Восстановить пароль
 
Valuamba
3 / 3 / 2
Регистрация: 03.11.2015
Сообщений: 77
#1

Выбираются те числа,которые являются произведением k различных простых множителей , k<7 - C++

16.12.2016, 16:39. Просмотров 163. Ответов 6
Метки нет (Все метки)

n-натуральное число, выбираются те числа,которые являются произведением k различных простых множителей,k<7.Найти первых таких,s<15/

Вот моя версия кода к этой задаче,только числа вида 36=2*2*3*3 программа не находит(допустим k=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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
int main()
{
    setlocale(LC_ALL,"Russian");
    const long int sum=10000;
    int vs=1;
    int n,c,ck;
    int A[sum];
    int V[sum];
    int kolv,k;
    int val=0;
    cout<<"Введите количество первых множителей: ";cin>>kolv;
    cout<<"Введите кол-во простых множителей: ";cin>>k;
  for(int n=1;n<=sum;n++)//ввод числа
  {
      ck=0;//начальное кол-во делителей
 
   for(int i=2;i<=n;i++)//поиск делителя
   {
     c=0;
 
    if(n%i==0)//условие делителя
     {
         for(int j=1;j<=i;j++)//проверка на простоту делителя
          if(i%j==0)//условие простоты
           c++;//сколько делителей
      if(c==2 && i<=1000)//еще одно условие
      {
          ck++;//кол-во делителей,прошедших проверку
          A[ck]=i;//массив простых делителей числа n
      }
     }
   }
            /*if(ck>=2)//кол-во простотых делителей ДЛЯ ПРОВЕРКИ!!
                {
                    cout<<"Введите число n: "<<n<<endl;
                    for(int j=1;j<=ck;j++)
                    cout<<"\t\t\t\tA["<<j<<"]="<<A[j]<<endl;//вывод с табуляцией
            }*/
        int rk=0;
        int kp;
        int p;
 
       for(int rk=1;rk<=ck-1;rk++)//перебираем множители
        {
         int sv=1;//для стеепени
         p=0;//кол-во множителей
          while(p<+k)//пока меньше числа
            {
                p++;
                sv=sv*A[rk];//степень множителя
                if(n==sv*A[rk+1])//условие при котором цикл остановится
                  {
                      p++;
                      if(k==p)
                    kp=sv*A[rk+1];
                  break;
                  }
 
            }
        }
 
   int vs=1;
  for(int i=1;i<=k;i++)//проверка множителей
    vs=vs*A[i];
  if(vs==n || kp==n)//загоняем в массив еужные нам числа
    {
 
      val++;//для вывода первых kolv чисел
      V[val]=n;//для вывода первых kolv чисел
 
        /*cout<<"V["<<val<<"]="<<V[val]<<endl;//ДЛЯ ПРОВЕРКИ!
             for(int j=1;j<=ck;j++)
                cout<<"\t\t\t\tA["<<j<<"]="<<A[j]<<endl;//вывод с табуляцией*/
    }
}
for(int l=1;l<=kolv;l++)//вывод
    cout<<"V["<<l<<"]="<<V[l]<<endl;
 
    _getch();
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2016, 16:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выбираются те числа,которые являются произведением k различных простых множителей , k<7 (C++):

Нужно найти числа которые являются произведением K различных простых множителей , k<7 - C++
Помогите пожалуйста решить задачу:Нужно найти числа которые являются произведением K различных простых множителей , k&lt;7 .Или хотя бы...

Определить количество элементов массива, которые являются произведением четного числа на нечетное - C++
Дан неупорядоченный массив, состоящий из n натуральных чисел. Определить количество элементов массива, которые являются произведением...

Найти в массиве числа, которые являются квадратами простых - C++
Написать программу в которой создается массив из любых чисел, а потом выводятся те числа которые являются квадратами простых

Подсчитать количество различных символов, которые не являются буквами или цифрами, и вывести их на экран - C++
Задание: Дана строка. Подсчитать количество различных символов, которые не являются буквами или цифрами, и вывести их на экран. Как это...

Найти числа, которые являются квадратами некоторого другого числа - C++
Помогите написать программу на С++ Вот условие: Даны целые положительные числа а1, а2 ..., а n. Найти среди них те, которые являются...

Найти в последовательности числа, которые являются квадратом числа m - C++
Даны целые положительные числа . Найти среди них те, которые являются квадратами некоторого числа m. помогите решить на &quot;С&quot; ...

6
Байт
Диссидент
Эксперт C
16575 / 10846 / 1653
Регистрация: 24.12.2010
Сообщений: 20,988
16.12.2016, 17:00 #2
Цитата Сообщение от Valuamba Посмотреть сообщение
числа вида 36=2*2*3*3 программа не находит
А зачем их находить?
Цитата Сообщение от Valuamba Посмотреть сообщение
произведением k различных простых множителей
0
Valuamba
3 / 3 / 2
Регистрация: 03.11.2015
Сообщений: 77
16.12.2016, 20:21  [ТС] #3
Смотри у 36-2 простых множителя-это 2 и 3,если я введу k=4(число должно состоять из 4 простых множителей),то моя программа не выведет это число,хотя должна потому что 36=2*2*3*3.По идее,у числа 36 2 простых множителя поэтому оно не подходит,но надо еще учитывать возведение этих простых множителей в степень и возведенные встепень множите на другие множители например у 45-5 и 3,5*3!=45,однако,5*3*3=45,или же 5*5*2*2=100.Так получается,что я пока еще не придумал как написать такую программу.
0
Байт
Диссидент
Эксперт C
16575 / 10846 / 1653
Регистрация: 24.12.2010
Сообщений: 20,988
16.12.2016, 20:28 #4
Valuamba, ты как-то странно трактуешь простое условие
Цитата Сообщение от Valuamba Посмотреть сообщение
те числа,которые являются произведением k различных простых множителей
36 = 2*2*3*3 НЕ ЯВЛЯЕТСЯ произведением различных простых сомножителей
Так же как и 8 = 2*2*2
Требуемыми числами являются 6=2*3, 10 = 2*5, 15=3*5, 30 = 2*3*5, 210 = 2*3*5*7 и т.д.
0
Valuamba
3 / 3 / 2
Регистрация: 03.11.2015
Сообщений: 77
16.12.2016, 20:31  [ТС] #5
а если составить программу не из разлычных простых множителей?
0
Байт
Диссидент
Эксперт C
16575 / 10846 / 1653
Регистрация: 24.12.2010
Сообщений: 20,988
16.12.2016, 20:42 #6
Цитата Сообщение от Valuamba Посмотреть сообщение
а если составить программу не из разлычных простых множителей?
Это будет совсем другая задача. Грамотно сформулируй ее и выложи в новую тему.

Добавлено через 6 минут
Кстати. Я не очень понял приведенного в стартовом посте кода (и в лом разбираться), но можно заметить, что для решения задачи вовсе не обязательно перебирать ЧИСЛА. Надо найти такое n, что Cnk >= s и из n-элементного множества генерировать сочетания по k элементов.
Для s = 15 k=6, n=8. То есть дело придется иметь с очень небольшими числами.
0
Valuamba
3 / 3 / 2
Регистрация: 03.11.2015
Сообщений: 77
16.12.2016, 20:52  [ТС] #7
Я по ходу придумал это условие
Цитата Сообщение от Байт Посмотреть сообщение
а если составить программу не из разлычных простых множителей?
Ну,учитывая,что в программе говорится о выводе первых s<=15 числах,я думаю,что первые 15 таких чисел не будут слишком большие.но это же не мешает искать их
0
16.12.2016, 20:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.12.2016, 20:52
Привет! Вот еще темы с ответами:

Даны целые положительные числа аь а2,., а„. Найти среди них те, которые являются квадратами некоторого числа т - C++
Упорядочить по возрастанию элементы каждой строки мат рицы размером пхт. Дана строка. Подсчитать количество букв к в последнем ее...

Даны целые числа a1, a2, ., an. Получить те положительные числа из этой последовательности, которые являются полными квадратами - C++
ПОМОГИТЕ решить задачу на C++ Заранее спасибо! Даны целые числа a1, a2, ..., an. Получить те положительные числа из этой...

Составить программу, которая выводит на экран все натуральные числа в диапазоне от 1 до n, которые являются степенью числа 2 - C++
Составил задачу которая только увеличивает на один ну тое сть выводит:1,2,3,4,...n Пытаюсь изменить чтоб выводило квадрат и тут...

Представить натуральное число в виде произведения простых множителей - C++
3. Представление натурального числа в виде произведения простых множителей.


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

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

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