Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2010, 18:30   #1
bloodflood
Пользователь
 
Аватар для bloodflood
 
Регистрация: 28.10.2010
Сообщений: 17
Вопрос Разложение на простые множители

Прошу помощи. Знаю, вас, наверное, уже достали студенты, которые жаждут помощи, но тем не менее я в ней нуждаюсь Задачка простая, вот только мысли в голову не идут. Только-только начали изучать.

Задача:
"Задача 4. Дано целое число А. Разложить это число на простые множители и указать множители с наибольшей и наименьшей кратностью. Написать программу, которая могла бы обрабатывать любое количество чисел А."

Сейчас реализована лишь та часть, без которой, я думаю, задача более чем решабельная, но тем не менее я выложу:
Код:
*Код удалён, дабы не позориться :D*
здесь идет проверка простое ли число введено, эта проверка вроде как не обязательна, но всё же...дальше мысли по решению этой задачи - через факториал, но както мысль далеко не ясна...

p.s. даже стыдно както спрашивать такие задачки

Мда, только сейчас понял какая тут черт возьми ересь написана в коде. Число то любое...множители простые, а не числа...черт...

Последний раз редактировалось bloodflood; 28.10.2010 в 18:51. Причина: fail(
bloodflood вне форума Ответить с цитированием
Старый 28.10.2010, 18:41   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Алгоритм:
Код:
множитель = 2
пока число не 1:
если число делится на множитель, то вывести множитель и разделить число на множитель
иначе увеличить множитель на 1
перейти на начало цикла

Последний раз редактировалось Arigato; 28.10.2010 в 22:08.
Arigato вне форума Ответить с цитированием
Старый 28.10.2010, 18:49   #3
bloodflood
Пользователь
 
Аватар для bloodflood
 
Регистрация: 28.10.2010
Сообщений: 17
Смущение

Arigato,

Большое спасибо, дошло

Код:
#include <iostream>
using namespace std;
int main()
{
 int a,m,z;
 cout<<"vvedite naturalnoe chislo a..."<<" ";
 cin>>a; //вводим натуральное число
 for (m=2; a==0; m++) // Начальный множитель =2; выполнять пока а не будет равняться нулю; увеличить множитель на 1 после каждого выполнения цикла
	if (a%m==0) //проверка делиться ли число без остатка
		{cout<<m<<", "; //вывод множителя если делится
		 a=a/m;} // деление числа на множитель
	
return 0;
}
Нехочет выводить в цикле множители. хм. неправильно вывожу?

Забыл, нужно ведь еще выполнить следующее условие: " и указать множители с наибольшей и наименьшей кратностью...", хм..

Последний раз редактировалось Stilet; 12.11.2010 в 15:03.
bloodflood вне форума Ответить с цитированием
Старый 28.10.2010, 20:10   #4
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Начнем с того, что приведенный мною алгоритм реализован неверно.
Arigato вне форума Ответить с цитированием
Старый 28.10.2010, 20:24   #5
bloodflood
Пользователь
 
Аватар для bloodflood
 
Регистрация: 28.10.2010
Сообщений: 17
По умолчанию

Код:
#include <iostream>
using namespace std;
int main()
{
 int a,m;
 cout<<"vvedite naturalnoe chislo a..."<<" ";
 cin>>a; //вводим натуральное число
 m=2;
 while (a==0) // пока число не ноль
  { 
	if (a%m==0) //проверка делиться ли число без остатка
		{cout<<m<<", "; //вывод множителя если делится
		 a=a/m;}
	        else (m=m++);//иначе увеличить множитель на 1
  }
return 0;
}
а здесь где ошибки? :0

Последний раз редактировалось bloodflood; 28.10.2010 в 20:28.
bloodflood вне форума Ответить с цитированием
Старый 28.10.2010, 21:38   #6
xPAL
Пользователь
 
Регистрация: 13.01.2008
Сообщений: 34
По умолчанию

А как число может стать нулем?
xPAL вне форума Ответить с цитированием
Старый 28.10.2010, 21:42   #7
bloodflood
Пользователь
 
Аватар для bloodflood
 
Регистрация: 28.10.2010
Сообщений: 17
По умолчанию

Аааа! какая же ошибка была тупая (не правильное условие while, не a==0, a a!=0 Спасибо большое так же пользователю Совесть за помощь.

А, всё таки небольшой глюк выходит при выполнении. Сделаю ка я вот так:
Код:
 while (a>0) // пока число не ноль
p.s. осталось только выполнить второе условие, а т.е. выцепить максимальное и минимальное из множителей

Последний раз редактировалось bloodflood; 28.10.2010 в 21:49.
bloodflood вне форума Ответить с цитированием
Старый 28.10.2010, 21:43   #8
xPAL
Пользователь
 
Регистрация: 13.01.2008
Сообщений: 34
По умолчанию

(m=m++) зачем так? m++ и всё. while (a!=1)

Последний раз редактировалось xPAL; 28.10.2010 в 21:46.
xPAL вне форума Ответить с цитированием
Старый 28.10.2010, 21:52   #9
bloodflood
Пользователь
 
Аватар для bloodflood
 
Регистрация: 28.10.2010
Сообщений: 17
По умолчанию

Черт, программа работает практически правильно, кроме одного - после разложения он долго долго думает, и прибавляет еще один множитель "-1". т.е., к примеру, раскладываю 500, получаю -
3, 3, 5, 5, 5, *думает* -1
х_х

Цитата:
Сообщение от xPAL Посмотреть сообщение
(m=m++) зачем так? m++ и всё. while (a!=1)
так, потому что за сомневался будет ли правильно работать если напишу просто m++ изначально так и написал
a!=1 ? можно разъяснить чуток?) ну чтоб дошло и в будущем учитывал :D

Последний раз редактировалось Stilet; 12.11.2010 в 15:05.
bloodflood вне форума Ответить с цитированием
Старый 28.10.2010, 21:56   #10
xPAL
Пользователь
 
Регистрация: 13.01.2008
Сообщений: 34
По умолчанию

Код:
int a,m = 2;
 cout<<"vvedite naturalnoe chislo a... ";
 cin>>a; //вводим натуральное число
 while (a!=1) // пока число не ноль
	if (a%m == 0) //проверка делиться ли число без остатка
		{
		cout<<m<<", "; //вывод множителя если делится
		 a /= m;
		}
	else 
		m++;

Последний раз редактировалось Stilet; 15.12.2010 в 08:57.
xPAL вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
разложение на простые множители pakusya Помощь студентам 2 19.12.2011 15:55
Разложение натурального числа на простые множители (Delphi) giga_person Помощь студентам 3 17.03.2010 16:24
Разложение чисел на множители Masia Паскаль, Turbo Pascal, PascalABC.NET 3 28.05.2009 14:32
Разложение числа на множители spamer Общие вопросы Delphi 5 01.01.2009 12:32
Разложение числа на простые множители artem_MG Паскаль, Turbo Pascal, PascalABC.NET 3 24.10.2008 19:28