Cody

# Problem 656. Calculate Euler's phi function

Solution 725139

Submitted on 28 Aug 2015 by goc3
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
%% vectorized 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
%% int16 assert(isequal(eulerphi(double(intmax('int16'))), 27000)) assert(isequal(eulerphi(double(intmax('uint16'))),32768))

phi = 27000 phi = 32768

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

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