![]() |
Помогите решить задачу на фортране
вот условие : Два натуральных числа называются "дружественными", если каждое из них равно сумме всех делителей другого, за исключением его самого (таковы, например, числа 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 |
3ddeni, извини, компилятора фортрана под рукой не оказалось. Написал на c#. Работает. Код с комментариями и достаточно прозрачен. В диапазоне до 300 выводит такие пары:
6 6 28 28 220 284 284 220 Код:
static void Main(string[] args) |
Tonny_Bennet, число жестко заданно, лучше что-то вроде
Код:
int max_value = Convert.ToInt32(Console.ReadLine()); |
ооо большое спасибо ) думаю теперь разберусь
|
логика решения задачи мне понятна ...реализовал ее с использованием вложенных циклов.
возникают проблемы при использовании функций в фортране тут немного переделал код 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 |
задачу решил
|
Цитата:
|
Время: 23:05. |
Время: 23:05.
© OSzone.net 2001-