欧拉变换
岩浆代码
欧拉变换:= 功能( 一 ) 抄送:= [ 宇宙(a) | &+[ 宇宙(a) | 日期[d] : 中的d 分区( n个 ) ] : n英寸 [1..#a] ] ; b:= [c[1]; 对于 n英寸 [2..#c] 做 nb编号:= c【n】 + &+[ 宇宙(a) | c【k】 * b[n-k] : k英寸 [1..n-1] ]; 断言 IsDivisibleB依据( n中, n个 ); b[n]:= nb n div n; 结束; 返回 b; end函数 ; 欧拉逆变换:= 功能( b条 ) 抄送:= [ 整数() | n*b[n] - &+[ 整数() | 自我c[ k个 ] * b条[ n-k ] : k英寸 [1..n-1] ] 哪里 自我c 是 自我() : n英寸 [1..#b] ]; 答:= []; 对于 [1..#c]中的n 做 答[n]:= &+[ 整数() | 莫比乌斯穆( n分度d ) * c[ d日 ] : 中的d 分区( n个 ) ]; 断言 a[n]mod n方程0; a[n]div(数字):= n; 结束; 返回 a; end函数 ; 断开连接的Euler:= 功能( A类 ) 断言 存在( (f) ){ 我 : 我在 [1..#A] | 一个0 }; P<[x]>:= 多项式环( 整数(), f+#甲 ); 抄送:= [ P(P) | i le#A(乐#A) 选择 阿[i] 其他的 x(i) : 我在 [1..#A+f] ]; 电子:= 欧拉变换( C ); 日期:= [ 整数() | E[i]-C[i] : 我在 [1..#A+f] ]; 电子:= [ 整数() | E[i]公司 : 我在 [1..#A] ]; 返回 D、 E; 末端函数;