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

Разложение натурального числа на два простых - C++

Восстановить пароль Регистрация
 
White_volf
4 / 4 / 0
Регистрация: 13.12.2012
Сообщений: 20
13.12.2012, 08:15     Разложение натурального числа на два простых #1
Помогите написать программу...
нужно разложить натуральное число на два простых всеми возможными способами.
вот мои наработки:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <cstdlib>
#include <iostream>
using namespace std;
int a,b,jj,i,ii,ij,ji,m,iii,iij,c[500],b[500],cd;
 
int main ()         
{          cd=0;    
    cout<<"vvodite chislo"; cin>>a;
     if (a<3) 
     {  if (a<0) {cout<<"error! a<0"; return 0;} else
     if (a==1) {cout<<"error! a=1"; return 0;} else  {cout<<"1 1"; return 0;}
              
     }
      else 
     { m=sqr(a);ij=0; iij=0;
    for (i=1; i<a; i++) {for (ii=2; ii<m; ii++) {if (a%i==0) cd++} if(cd==0) {c[ij]=i; ij++;}}
      if
     }     for (jj=0; jj<ij; jj++) {cout<<c[jj]<<"  "<<b[]}
}
я запутался в коде

заранее благодарю...

Добавлено через 44 секунды
не могу понять, что дальше
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2012, 08:15     Разложение натурального числа на два простых
Посмотрите здесь:

Разложение Натурального числа C++
C++ Разложение натурального числа
C++ Сформировать массив простых чисел не больших заданного натурального числа N.
C++ Разложение натурального числа
Среди простых чисел , не превосходящих заданного натурального числа N .Найти такие, в десятичном представление которых больше всего нулей C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
13.12.2012, 08:25     Разложение натурального числа на два простых #2
Цитата Сообщение от White_volf Посмотреть сообщение
нужно разложить натуральное число на два простых
Что? Только на два? А если в числе не 2 простых числа?

Цитата Сообщение от White_volf Посмотреть сообщение
всеми возможными способами
Что?? А ничего, что количество способов всегда равно единице?
White_volf
4 / 4 / 0
Регистрация: 13.12.2012
Сообщений: 20
13.12.2012, 08:51  [ТС]     Разложение натурального числа на два простых #3
ну то есть разложить число на суммы двух простых чисел.

нет не один... по заданию.
например: 6 раскладывается в строку: 1 5, 5 1, 3 3

Добавлено через 3 минуты
вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <cmath>
#include <cstdlib>
#include <iostream>
using namespace std;
int a,b,jj,i,ii,iii,iij,ij,ji,m,k,c[500],cd;
 
int main ()         
{          cd=0;    
    cout<<"vvodite chislo"; cin>>a;
     if (a<3) 
     {  if (a<0) {cout<<"error! a<0"; return 0;} else
     if (a==1) {cout<<"error! a=1"; return 0;} else  {cout<<"1 1"; return 0;}
              
     }
      else 
     { m=sqrt(a);ij=0; iij=0;
    for (i=1; i<a; i++) {for (ii=2; ii<m; ii++) {if (a%i==0) cd++;} if(cd==0) {c[ij]=i; ij++;}}
     }
     for (jj=0; jj==ij; jj++) {d=a-c[jj]; k=sqrt(d[jj]); 
     {for (iii=2; iii<k; iii++)   {if (a%iii==0) cd++} if(cd==0) {cout<<c[jj]<<" "<<b[jj];}}
     cin>>cd
}
Добавлено через 44 секунды
в чём ошибка?
как исправить?
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5548 / 2562 / 233
Регистрация: 01.11.2011
Сообщений: 6,332
Завершенные тесты: 1
13.12.2012, 09:18     Разложение натурального числа на два простых #4
C++
1
m=sqrt(a)
Объяви a не как int, а как double. Функция sqrt принимает значения только дабловского типа.
Ну или как вариант:
C++
1
m=sqrt((double)a)
И перепиши код под правильное форматирование. Все глаза сломаешь.
Где-то со скобочками косяк и с именами переменных.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
13.12.2012, 09:35     Разложение натурального числа на два простых #5
White_volf, далеко не каждое число раскладывается именно на два простых:
1. Если число равно произведению трёх и более простых, то как его не дели на простое, простое частное не получится, так как частное числа и одного его делителя есть произведение всех остальных его делителей, а произведение хотя бы двух простых делителей делится на оба, на себя и на 1 итого имеет 4 делителя, простым не являясь.
2. Если число равное произведению даже двух простых, но хотя бы одно из них входит в степени с показателем больше 1, то как его не дели на простое, простое частное не получится, так как частное числа и одного его делителя есть произведение всех остальных его делителей, считая каждый столько раз, в какой степени он входит исходное число, таким образом, в частном от деления на простое будет или степень простого с показателем больше 1, или произведение как минимум двух простых. Но такие степени простыми не являются, так как делятся на основание, на 1 и на себя, итого имеет 3 делителя, простым не являясь.
Но в обоих случаях само исходное число может быть натуральным.

Добавлено через 11 минут
Цитата Сообщение от White_volf Посмотреть сообщение
ну то есть разложить число на суммы двух простых чисел.
нет не один... по заданию.
например: 6 раскладывается в строку: 1 5, 5 1, 3 3
На суммы? Ты серьёзно? И потом, возьмём, например, 17. Какие суммы возможны?
1+16. 16 имеет 5 делителей: 1, 2, 4, 8 и 16, не простое. 1 делится только на себя не простое.
2+15. 15 имеет 4 делителя: 1, 3, 5 и 15, не простое.
3+14. 14 имеет 4 делителя: 1, 2, 7 и 14, не простое.
4+13. 4 имеет 3 делителя: 1, 2 и 4, не простое.
5+12. 12 имеет 5 делителей: 1, 2, 3, 4 и 12, не простое.
6+11. 6 имеет 6 делителя: 1, 2, 3 и 6, не простое.
7+10. 10 имеет 4 делителя: 1, 2, 5 и 10, не простое.
8+9. 8 имеет 4 делителя: 1, 2, 4 и 8, не простое. 9 имеет 3 делителя: 1, 3, и 9, не простое.
9+8. 8 имеет 4 делителя: 1, 2, 4 и 8, не простое. 9 имеет 3 делителя: 1, 3, и 9, не простое.
10+7. 10 имеет 4 делителя: 1, 2, 5 и 10, не простое.
11+6. 6 имеет 6 делителя: 1, 2, 3 и 6, не простое.
12+5. 12 имеет 5 делителей: 1, 2, 3, 4 и 12, не простое.
13+4. 4 имеет 3 делителя: 1, 2 и 4, не простое.
14+3. 14 имеет 4 делителя: 1, 2, 7 и 14, не простое.
15+2. 15 имеет 4 делителя: 1, 3, 5 и 15, не простое.
16+1. 16 имеет 5 делителей: 1, 2, 4, 8 и 16, не простое. 1 делится только на себя не простое.
Ни в одной сумме нет двух простых.
White_volf
4 / 4 / 0
Регистрация: 13.12.2012
Сообщений: 20
13.12.2012, 14:09  [ТС]     Разложение натурального числа на два простых #6
такое задание
Yandex
Объявления
13.12.2012, 14:09     Разложение натурального числа на два простых
Ответ Создать тему
Опции темы

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