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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2010, 21:57   #11
bloodflood
Пользователь
 
Аватар для bloodflood
 
Регистрация: 28.10.2010
Сообщений: 17
По умолчанию

Бинго! a!=1 помогло! теперь не пишет -1

Хм, осталось подумать как вытащить большой и малый множители)

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

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

Код:
#include <iostream>
using namespace std;
int main()
{
 int a,m,min,max;
 cout<<"vvedite naturalnoe chislo a..."<<" ";
 cin>>a; //вводим натуральное число
 m=2;
 while (a!=1) // пока число не 1
   
	if (a%m==0) //проверка делиться ли число без остатка
		{cout<<m<<", "; //вывод множителя если делится
		 a=a/m;//делим число, дабы продолжить веселье
		 max=m;}//записываем максимальный множитель (последний т.е.)
	        else m++;//иначе увеличить множитель на 1
  cout<<"maximalnij mnozhitel = "<<max;
 return 0;
}
Максимальный множитель вывести легко, а вот как вывести минимальный? никаких мыслей нет, на данный момент. думаю
bloodflood вне форума Ответить с цитированием
Старый 28.10.2010, 23:16   #14
xPAL
Пользователь
 
Регистрация: 13.01.2008
Сообщений: 34
По умолчанию

Цитата:
Сообщение от bloodflood Посмотреть сообщение
Хм, осталось подумать как вытащить большой и малый множители)
int a,m = 2, min, max;
cout<<"vvedite naturalnoe chislo a... ";
cin>>a; //вводим натуральное число
min = a;
while (a!=1) // пока число не ноль
if (a%m == 0) //проверка делиться ли число без остатка
{
cout<<m<<", "; //вывод множителя если делится
a /= m;
if (min>m)
min = m;

max = m;
}
else
m++;
cout <<'\n' << min << ' ' << max;

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

xPAL, Шикарнооо спасибо большое. как всё оказалось проще реализовано. А то я уже начал думать всякую хрень про счетчики :D

п.с. заодно и ответил на мой вопрос который я хотел задать - как сделать перевод строки (\n)

Complete!
bloodflood вне форума Ответить с цитированием
Старый 29.10.2010, 00:09   #16
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Минимальным будет самый первый множитель, а максимальным - последний. Потому максимальным множителем будет значение m после завершения цикла.
Arigato вне форума Ответить с цитированием
Старый 29.10.2010, 00:18   #17
xPAL
Пользователь
 
Регистрация: 13.01.2008
Сообщений: 34
По умолчанию

Кстати, да. Можно убрать переменную max и просто выводить m по завершении цикла

Последний раз редактировалось xPAL; 29.10.2010 в 16:03.
xPAL вне форума Ответить с цитированием
Старый 12.11.2010, 09:59   #18
bloodflood
Пользователь
 
Аватар для bloodflood
 
Регистрация: 28.10.2010
Сообщений: 17
По умолчанию

А задача то, оказывается не полностью верно решилась.
Нужно "...указать множители с наибольшей и наименьшей кратностью...", а не максмимальный и минимальный множители..
в коде там заккоментировал кое-что, всяко извращался...пытался понять условие "указать множители ... кратностью". х_х
Код:
/*
Дано целое число А. [Complete
Разложить это число на простые множители [Complete] и указать множители с наибольшей и наименьшей кратностью. [wtf]
Написать программу, которая могла бы обрабатывать любое количество чисел А. [Complete]
*/

#include <iostream>
using namespace std;
int main()
{
 int a,m,k=0,min,max;
 cout<<"vvedite kolichestvo chisel A\n";
 cin>>k;
 for (int r=0; r<k; r++) //цикл работает указанное количество K раз
  {
   cout<<"vvedite naturalnoe chislo a\n";
   cin>>a; //вводим натуральное число
   m=2;//начальный множитель =2
   max=0;//максимальный множитель равен нулю
   min=a;//минимальный множитель изначально равен самому числу
   cout<<"mnozhiteli: ";
   while (a!=1) // пока число не 1   
	  if (a%m==0) //проверка делиться ли число без остатка
	  	{cout<<m<<", "; //вывод множителя если делится
	       a=a/m; //делим число дабы продолжить цикл как необходимо
			  if (min>m) //если значение min больше множителя
			  //min = m;
			    {if (min%2==0)
				min=m;}//,то присвоить min значение множителя
			 	 if (max < m)//если значение max меньше множителя
					 //max = m;//то присвоить max значение множителя
					{if (max%2==0)
					max=m;}
						}
				 else m++;//иначе увеличить множитель на 1
   cout<<"\nmaximalnij kratnij mnozhitel = "<<max;
   cout<<"\nminimalnij kratnij mnozhitel = "<<min<<"\n";

  }
return 0;
}
печаль

Последний раз редактировалось bloodflood; 12.11.2010 в 10:56.
bloodflood вне форума Ответить с цитированием
Старый 12.11.2010, 14:33   #19
ozo
Форумчанин
 
Аватар для ozo
 
Регистрация: 26.04.2010
Сообщений: 328
По умолчанию

Код:
#include <iostream>

int main( ){
    int A;
    std::cin >> A;
    int max = 0;
    int min = A;
    std::cout << "Mnozhiteli :\n";
    for( int mn = 2; A != ( A > 0 ? 1 : -1 ); mn++ )
	while( !( A % mn ) ){
	    if( max < mn )
		max = mn;
	    if( min > mn )
		min = mn;
	    std::cout << mn << '\n';
	    A /= mn;
	}
    std::cout << "max = " << A / min << '\n';
    std::cout << "min = " << A / max << '\n';
}
возможно не эффективно, но просто )
Используй гугль, будь счастлив
hackme@yandex.ru
Блог об archlinux

Последний раз редактировалось ozo; 12.11.2010 в 16:40.
ozo вне форума Ответить с цитированием
Старый 09.12.2010, 19:27   #20
bloodflood
Пользователь
 
Аватар для bloodflood
 
Регистрация: 28.10.2010
Сообщений: 17
По умолчанию

Эм. Кажется значения min и max, в данном коде, в чуть более, чем всех случаях = 0
bloodflood вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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