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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
Ripuanvinkoln
1 / 1 / 0
Регистрация: 20.11.2014
Сообщений: 8
20.11.2014, 21:31     Как представить натуральное число в виде произведения двух простых чисел #1
Нашел что то похожее только, там 3 простых числа, и проблема в том что код написан на Paskalе, если можете объяснить или написать код для Borland C++, буду очень признателен
Код с 3мя простыми числами:
Pascal
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
uses crt;
function Prost(n:longint):boolean;
var i:longint;
    f:boolean;
begin
if i<2 then f:=false
else
 begin
  f:=true;
  i:=2;
  while(i*i<=n)and f do
  if n mod i=0 then f:=false
  else i:=i+1;
 end;
Prost:=f;
end;
var i,j,k,n:longint;
    f:boolean;
begin
clrscr;
write('Введите натуральное число n=');
readln(n);
i:=2;
f:=false;
while (i<=n div 2)and not f do
 begin
  j:=i;
  while (j<=n div (2*i)) and not f do
   begin
    k:=j;
    while (k<=n div (i*j)) and not f do
    if Prost(i)and(Prost(j))and(Prost(k))
    and(i*j*k=n) then
     begin
      f:=true;
      writeln('Можно ',n,'=',i,'*',j,'*',k);
     end
    else k:=k+1;
    if not f then j:=j+1;
   end;
  if not f then i:=i+1;
 end;
if not f then write('Нельзя');
readln
end.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2014, 21:31     Как представить натуральное число в виде произведения двух простых чисел
Посмотрите здесь:

Можно ли представить данное число в виде произведения трех последовательных натуральных чисел C++
Можно ли заданное натуральное число М представить в виде суммы квадратов двух натуральных чисел? C++
C++ Представить n в виде произведения простых чисел
C++ Даны натуральное число n. Среди чисел 1, 2, …, n найти все те, которые можно представить в виде суммы квадратов двух натуральных чисел.
Даны натуральное число n. Среди чисел 1, 2, …, n найти все те, которые можно представить в виде суммы квадратов двух натуральных чисел C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Amandosov
Знаток
156 / 156 / 65
Регистрация: 18.11.2012
Сообщений: 411
Записей в блоге: 2
20.11.2014, 22:16     Как представить натуральное число в виде произведения двух простых чисел #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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;
bool prostoe(int n)
{
for(int i=2;i<n;i++)
if(n%i==0) return false;
return true;
}
 
 
int main()
{
bool prost=true;
int n;
cin>>n;
for(int i=2;i<n;i++)
if(n%i==0)
{
prost=false;
if(prostoe(i)&&prostoe(n/i))
cout<<i<<'*'<<n/i;
else cout<<"невозможно представить это натуральное число в виде произведения двух простых чисел ";
return 0;
}
 
if(prost) cout<<"натуральное число и есть простое число"; 
 
return 0;
}
Ripuanvinkoln
1 / 1 / 0
Регистрация: 20.11.2014
Сообщений: 8
20.11.2014, 22:47  [ТС]     Как представить натуральное число в виде произведения двух простых чисел #3
Amandosov Спасибо большое что так быстро откликнулись))

Добавлено через 15 секунд
Amandosov, Спасибо!)
Amandosov
Знаток
156 / 156 / 65
Регистрация: 18.11.2012
Сообщений: 411
Записей в блоге: 2
20.11.2014, 22:50     Как представить натуральное число в виде произведения двух простых чисел #4
Незачто
Mak20
2 / 2 / 0
Регистрация: 06.09.2014
Сообщений: 79
21.11.2014, 06:48     Как представить натуральное число в виде произведения двух простых чисел #5
(не по теме вопрос)
я для того что бы можно было писать в
C++
1
cout << "текст";
пишу
C++
1
setlocale (0, "");
Иначе у меня русские буквы не корректно отображаются, у тебя я не увидел подобного, как тогда у тебя они отображаются тогда?
Ripuanvinkoln
1 / 1 / 0
Регистрация: 20.11.2014
Сообщений: 8
21.11.2014, 18:37  [ТС]     Как представить натуральное число в виде произведения двух простых чисел #6
Amandosov, Только в Борланде он пишется иначе)) Не затруднит написать код в борланде?)) Я в си разобраться не могу) Спасибо))
Amandosov
Знаток
156 / 156 / 65
Регистрация: 18.11.2012
Сообщений: 411
Записей в блоге: 2
21.11.2014, 18:52     Как представить натуральное число в виде произведения двух простых чисел #7
Mak20, я в онлайн компиляторе на сайте cpp.sh компилирую, и там норм отображаются

Добавлено через 1 минуту
Ripuanvinkoln, вопрос не понял, наверно тебе надо на Borland Paskal-е написать?
Ripuanvinkoln
1 / 1 / 0
Регистрация: 20.11.2014
Сообщений: 8
21.11.2014, 19:08  [ТС]     Как представить натуральное число в виде произведения двух простых чисел #8
Amandosov, Ну программирование производится в Borland C++ bilder;
А сам код по моему нужно писать в C.

Добавлено через 1 минуту
вот самый пресловутый может даже не рабочий пример)) только что накалякал))
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 <stdio.h>
#include <math.h>
#include <conio.h>
int main(int argc, char* argv[])
{
    int a,i,b;
    double c;
    printf("qwrqwr=  ",a);
    scanf("%ld",&a);
   for(i=2;i<a;i++)
    if (a%i==0)
    {
     b=a/i;
       for (i=2;i<b;i++)
        if (b%i==0)
         {}
         else
         {
         c=b/i;
          printf("b ost0 %lf\n",c);
          }
     }
     else
      {
       c=a/i;
      printf("b ost %lf %ld\n",c,i);
      }
        getch();
}
TheCalligrapher
С чаем беда...
Эксперт С++
 Аватар для TheCalligrapher
2782 / 1428 / 393
Регистрация: 18.10.2014
Сообщений: 2,620
21.11.2014, 19:18     Как представить натуральное число в виде произведения двух простых чисел #9
Цитата Сообщение от 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;
}
Ripuanvinkoln
1 / 1 / 0
Регистрация: 20.11.2014
Сообщений: 8
24.11.2014, 16:56  [ТС]     Как представить натуральное число в виде произведения двух простых чисел #10
Amandosov, вот что я просил)) Можете проверить и сказать где ошибка?
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
int prov(int x)
{
    int i;
    if (x==1)
    {return 1;}
    else
     {
      if (x==2)
       return 1;
       else
        {
      for(i=2;i<x;i++)
       {
       if (x%i==0)
       return 0;
       }
       return 1;
     }
}
}
void main (void)
 {
 int a,i;
 printf("a=",a);
 scanf("%lf",&a);
 if (a>2)
  {
   for (a=2;i<a;i++)
    {
     if(a%i==0)
      {
       if (prov(i))
        {
         if (prov(a/i))
          printf("M");
         else
          printf("N");
         }
       else
        printf("N");
      }
     }
     printf("takih net");
   }
getch();
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.01.2015, 18:30     Как представить натуральное число в виде произведения двух простых чисел
Еще ссылки по теме:

Создать программу, которая позволяет ввести целое число n и вывести это число в виде произведения простых чисел C++
Вывести наименьшее натуральное число, которое можно представить двумя разными способами в виде суммы кубов двух натуральных чисел C++
C++ Представить натуральное число в виде произведения простых множителей

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

Или воспользуйтесь поиском по форуму:
Mk_Man
0 / 0 / 0
Регистрация: 22.01.2015
Сообщений: 26
22.01.2015, 18:30     Как представить натуральное число в виде произведения двух простых чисел #11
TheCalligrapher, а как сделать, что бы вместо произведения находило сумму?
Yandex
Объявления
22.01.2015, 18:30     Как представить натуральное число в виде произведения двух простых чисел
Ответ Создать тему
Опции темы

Текущее время: 17:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru