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

Как представить натуральное число в виде произведения двух простых чисел - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Дан текстовый файл с неизвестным количеством вещественных чисел http://www.cyberforum.ru/cpp-beginners/thread1306370.html
Дан текстовый файл с неизвестным количеством вещественных чисел. Написать функцию для определения есть ли среди них число у которого сумма цифр целой и дробной части равны
C++ Дана матрица размерностью 6х6 Дана матрица размерностью 6х6.В этой матрице найти минимальный элемент,лежащий ниже побочной диагонали, и заменить его на 0 http://www.cyberforum.ru/cpp-beginners/thread1306369.html
Задача на двумерные массивы C++
Заменить элементы главной диагонали матрицы целых чисел 5х5 суммами элементов столбцов. void __fastcall TForm1::Button1Click(TObject *Sender) {int a,i,j; int S; for(i=0;i<5;i++)...
C++ Конечная сумма
Для заданного к и ч посчитать следующее выражение \sum \frac{{-1}^{n-1}*{x}^{n}} {2n!}
C++ Определить есть ли в файле число у которого сумма цифр целой и дробной части равны http://www.cyberforum.ru/cpp-beginners/thread1306360.html
Дан текстовый файл с неизвестным количеством вещественных чисел. Написать функцию для определения есть ли среди них число у которого сумма цифр целой и дробной части равны
C++ Ошибка при вводе многомерного массива Подскажите пожалуйста. Задача заключается в следующем. Дан двумерный динамический массив, найти сумму элементов каждого столбца. Вот сам код: #include <iostream> using namespace std; void... подробнее

Показать сообщение отдельно
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
3912 / 2149 / 549
Регистрация: 18.10.2014
Сообщений: 3,756
21.11.2014, 19:18
Цитата Сообщение от Ripuanvinkoln Посмотреть сообщение
Нашел что то похожее
Я не знаю, что за сумрачный гений решал эту задачу на Паскале, но мне кажется, что Основную Теорему Арифметики проходят еще в школе. По крайней мере затрагивают.

Разложить число на произведение ровно N простых: выполняем факторизацию числа и смотрим, сколько получилось множителей. Если ровно N - готов ответ. Если не 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
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <iostream>
using namespace std;
 
unsigned first_prime_factors(unsigned value, unsigned factors[], unsigned nfactors)
{
  unsigned divisor = 2, ifactor = 0;
 
  while (divisor < value)
    if (value % divisor == 0)
    {
      if (ifactor == nfactors)
        return -1;
 
      factors[ifactor++] = divisor;
      value /= divisor;
    }
    else
      ++divisor;
 
  if (value > 1)
  {
    if (ifactor == nfactors)
      return -1;
 
    factors[ifactor++] = value;
  }
 
  return ifactor;
}
 
 
int main()
{
  unsigned value = 0;
  cout << "Chislo: ";
  cin >> value;
 
  unsigned factors[2];
  unsigned nfactors = first_prime_factors(value, factors, 2);
 
  if (nfactors == 2)
    cout << value << " = " << factors[0] << " * " << factors[1] << endl;
  else
    cout << "Nevozmozhno" << endl;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru