|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - [решено] Помогите решить задачу на фортране |
|
Разное - [решено] Помогите решить задачу на фортране
|
Новый участник Сообщения: 4 |
Профиль | Отправить PM | Цитировать вот условие : Два натуральных числа называются "дружественными", если каждое из них равно сумме всех делителей другого, за исключением его самого (таковы, например, числа 220 и 284). Напечатать все пары "дружественных" чисел, не превосходящих заданного натурального числа.
(Определить функцию, вычисляющую сумму делителей числа.) и вот еще мои наброски ...до конца завершить не получилос ...видимо не знаю каких то тонкостей ( program pr4 integer s1 real k,g,s write(*,*) "vvdedite chislo k" read(*,*) k do g=2,k s=del(g) s1=del(s-1) if((s1==g).and.(s/=g).and.(s/=x)) then write(*,*) "Chisla",a," i",s,"-drugestvenie" x=s1 endif end do contains integer function del(a) integer s integer h,i h=a s=0 do i=1,a-1 if(mod(h,i)==0) then s=s+i end if end do del=s end function del end |
|
Отправлено: 01:59, 27-08-2011 |
Ветеран Сообщения: 1384
|
Профиль | Отправить PM | Цитировать 3ddeni, извини, компилятора фортрана под рукой не оказалось. Написал на c#. Работает. Код с комментариями и достаточно прозрачен. В диапазоне до 300 выводит такие пары:
6 6 28 28 220 284 284 220 static void Main(string[] args) { //верхний предел int max_value = 500; //суммы делителей int sum_1; int sum_2; //перебираем в цикле все возможные натуральные числа //не превосходящие максимального значения for (int i=1; i <= max_value; i++) { //обнуляем суммы sum_1 = 0; sum_2 = 0; //находим все делители числа i for (int j = 1; j < i; j++) { //если числа делятся без остатка if (Math.IEEERemainder(i,j) == 0) { //суммируем делители числа i sum_1 = sum_1 + j; } } //находим все делители sum - //суммы числа делителей i for (int j = 1; j < sum_1; j++) { //если числа делятся без остатка if (Math.IEEERemainder(sum_1, j) == 0) { //суммируем делители числа sum_1 sum_2 = sum_2 + j; } } //Если сумма делителей второго числа равна первому //найдена пара "дружественных чисел" if (i == sum_2) { Console.WriteLine("Pair: " + i.ToString() + " " + sum_1.ToString()); } } Console.WriteLine("Press any key for exit..."); Console.ReadKey(); } |
------- Отправлено: 10:52, 27-08-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Разный Сообщения: 1294
|
Профиль | Отправить PM | Цитировать |
Отправлено: 11:07, 27-08-2011 | #3 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать ооо большое спасибо ) думаю теперь разберусь
|
Отправлено: 11:10, 27-08-2011 | #4 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать логика решения задачи мне понятна ...реализовал ее с использованием вложенных циклов.
возникают проблемы при использовании функций в фортране тут немного переделал код program pr4 integer s1,k,g,s write(*,*) "vvdedite chislo k" read(*,*) k do g=2,k s=del(g) s1=del(j) if((s1==g).and.(s/=g).and.(s/=x)) then write(*,*) "Chisla",g," i",s,"-drugestvenie" x=s1 endif end do contains integer function del(a) integer s,i,a s=0 do i=1,a-1 if(mod(a,i)==0) then s=s+i end if end do del=s end function del end |
|
Отправлено: 12:07, 27-08-2011 | #5 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать задачу решил
|
Отправлено: 13:41, 27-08-2011 | #6 |
Ветеран Сообщения: 1384
|
Профиль | Отправить PM | Цитировать Цитата ferget:
|
|
------- Отправлено: 22:05, 27-08-2011 | #7 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
C/C++ - Помогите решить задачу | NightmaR | Программирование и базы данных | 1 | 25-05-2011 21:10 | |
C/C++ - ПОМОГИТЕ РЕШИТЬ ЗАДАЧУ НА С++ | delfi | Программирование и базы данных | 1 | 12-05-2011 20:19 | |
C/C++ - Помогите решить задачу | zdughi | Программирование и базы данных | 1 | 01-05-2009 06:03 | |
помогите решить задачу | snikers | Программирование и базы данных | 2 | 27-08-2004 01:57 | |
помогите решить задачу | Guest | Программирование и базы данных | 2 | 21-05-2004 11:23 |
|