Cody

Problem 656. Calculate Euler's phi function

Solution 854263

Submitted on 21 Mar 2016 by William
This solution is locked. To view this solution, you need to provide a solution of the same size or smaller.

Test Suite

Test Status Code Input and Output
1   Pass
y_correct = [ 1, 1, 2, 2, 4, 2, 6, 4, 6, 4, 10, ... 4, 12, 6, 8, 8, 16, 6, 18, 8, 12, ... 10, 22, 8, 20, 12, 18, 12, 28, 8, ... 30, 16, 20, 16, 24, 12, 36, 18, 24, ... 16, 40, 12, 42, 20, 24, 22, 46, 16, ... 42, 20, 32, 24, 52, 18, 40, 24, 36, 28, ... 58, 16, 60, 30, 36, 32, 48, 20, 66, 32, ... 44, 24, 70, 24, 72, 36, 40, 36, 60, 24, ... 78, 32, 54, 40, 82, 24, 64, 42, 56, 40, ... 88, 24, 72, 44, 60, 46, 72, 32, 96, 42, 60]; assert(isequal(eulerphi(1:99),y_correct))

phi = Columns 1 through 16 1 1 2 2 4 2 6 4 6 4 10 4 12 6 8 8 Columns 17 through 32 16 6 18 8 12 10 22 8 20 12 18 12 28 8 30 16 Columns 33 through 48 20 16 24 12 36 18 24 16 40 12 42 20 24 22 46 16 Columns 49 through 64 42 20 32 24 52 18 40 24 36 28 58 16 60 30 36 32 Columns 65 through 80 48 20 66 32 44 24 70 24 72 36 40 36 60 24 78 32 Columns 81 through 96 54 40 82 24 64 42 56 40 88 24 72 44 60 46 72 32 Columns 97 through 99 96 42 60

2   Pass
assert(isequal(eulerphi(double(intmax('int16'))), 27000)) assert(isequal(eulerphi(double(intmax('uint16'))),32768))

phi = 27000 phi = 32768

3   Pass
assert(isequal(eulerphi(double(intmax('int32'))), 2147483646)) assert(isequal(eulerphi(double(intmax('uint32'))),2147483648))

phi = 2.1475e+09 phi = 2.1475e+09