Форум программистов, компьютерный форум, киберфорум
dondublon
Войти
Регистрация
Восстановить пароль
Оценить эту запись

Дружественные числа на numpy

Запись от dondublon размещена 15.05.2015 в 10:44

Amicative numbers with numpy.

На форуме попросили сделать задачку. Ну а я, как труъ-numpyer решил делать на numpy. Пришлось напрячь свою соображалку и знания этой либы. Финальный вариант выглядит так:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import numpy as np
 
n = 10000
 
r1 = np.arange(1, n)
rem = np.remainder(r1[:, np.newaxis], r1[np.newaxis, :])
 
d0 = np.where(rem==0, r1[np.newaxis, :], 0)
div_sum0 = np.sum(d0, axis=1, dtype=int) - r1
div_sum = np.insert(div_sum0, 0, 0)
 
                                  
print div_sum[220], div_sum[284] # check div_num. 
 
rn = np.arange(n)
div_sum1 = div_sum.copy()
div_sum1[div_sum1 >= n] = 0
friendly = rn[np.logical_and(rn[div_sum1][div_sum1] == rn, rn[div_sum1] != rn)]
print zip(friendly, div_sum[friendly])
Размещено в Без категории
Показов 426 Комментарии 0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.