生活随笔
收集整理的這篇文章主要介紹了
erlang(21)-列表推导与计算素数与合数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、參考知識:
hhttps://blog.csdn.net/AI_LX/article/details/110530818
2、代碼
-module(learnerl).
-export([is_prime_number/1,get_prime_nums/1]).
is_ediv(A,L)->io:format("~n~p:~n",[A]),GetRem=fun(X)->(fun(Y)->IsZero=(X rem Y) =:=0,case IsZero oftrue->io:format("~p=~p*~p~n",[X,Y,X div Y]);false->io:format("") end, IsZeroend)end,lists:any(fun(X)->X end,lists:map(GetRem(A),L)). output_lst([Fst|Rst])->io:format("~p ",[Fst]),output_lst(Rst);
output_lst([]) ->io:format("~n").is_prime_number(Num)->Seq=lists:seq(2,round(math:sqrt(Num))),IsNotEDiv=fun(L)->(fun(A)->not is_ediv(A,L) end) end,IsPrime=IsNotEDiv(Seq),IsPrime(Num).get_prime_nums(MaxNum)->Seq=lists:seq(2,MaxNum),Result=[Num||Num<-Seq,is_prime_number(Num)],io:format("~n素數:~n") ,output_lst(Result).
4> learnerl:is_prime_number
(121313231).
121313231:
121313231=13*9331787
false
5> learnerl:is_prime_number
(11111).
11111:
11111=41*271
false
6> learnerl:is_prime_number
(111101).
111101:
111101=241*461
false
7> learnerl:is_prime_number
(199).
199:
true
8>
8> learnerl:get_prime_nums
(120).
2:
3:
4:
4=2*2
5:
6:
6=2*3
7:
8:
8=2*4
9:
9=3*3
10:
10=2*5
11:
12:
12=2*6
12=3*4
13:
14:
14=2*7
15:
15=3*5
16:
16=2*8
16=4*4
17:
18:
18=2*9
18=3*6
19:
20:
20=2*10
20=4*5
21:
21=3*7
22:
22=2*11
23:
24:
24=2*12
24=3*8
24=4*6
25:
25=5*5
26:
26=2*13
27:
27=3*9
28:
28=2*14
28=4*7
29:
30:
30=2*15
30=3*10
30=5*6
31:
32:
32=2*16
32=4*8
33:
33=3*11
34:
34=2*17
35:
35=5*7
36:
36=2*18
36=3*12
36=4*9
36=6*6
37:
38:
38=2*19
39:
39=3*13
40:
40=2*20
40=4*10
40=5*8
41:
42:
42=2*21
42=3*14
42=6*7
43:
44:
44=2*22
44=4*11
45:
45=3*15
45=5*9
46:
46=2*23
47:
48:
48=2*24
48=3*16
48=4*12
48=6*8
49:
49=7*7
50:
50=2*25
50=5*10
51:
51=3*17
52:
52=2*26
52=4*13
53:
54:
54=2*27
54=3*18
54=6*9
55:
55=5*11
56:
56=2*28
56=4*14
56=7*8
57:
57=3*19
58:
58=2*29
59:
60:
60=2*30
60=3*20
60=4*15
60=5*12
60=6*10
61:
62:
62=2*31
63:
63=3*21
63=7*9
64:
64=2*32
64=4*16
64=8*8
65:
65=5*13
66:
66=2*33
66=3*22
66=6*11
67:
68:
68=2*34
68=4*17
69:
69=3*23
70:
70=2*35
70=5*14
70=7*10
71:
72:
72=2*36
72=3*24
72=4*18
72=6*12
72=8*9
73:
74:
74=2*37
75:
75=3*25
75=5*15
76:
76=2*38
76=4*19
77:
77=7*11
78:
78=2*39
78=3*26
78=6*13
79:
80:
80=2*40
80=4*20
80=5*16
80=8*10
81:
81=3*27
81=9*9
82:
82=2*41
83:
84:
84=2*42
84=3*28
84=4*21
84=6*14
84=7*12
85:
85=5*17
86:
86=2*43
87:
87=3*29
88:
88=2*44
88=4*22
88=8*11
89:
90:
90=2*45
90=3*30
90=5*18
90=6*15
90=9*10
91:
91=7*13
92:
92=2*46
92=4*23
93:
93=3*31
94:
94=2*47
95:
95=5*19
96:
96=2*48
96=3*32
96=4*24
96=6*16
96=8*12
97:
98:
98=2*49
98=7*14
99:
99=3*33
99=9*11
100:
100=2*50
100=4*25
100=5*20
100=10*10
101:
102:
102=2*51
102=3*34
102=6*17
103:
104:
104=2*52
104=4*26
104=8*13
105:
105=3*35
105=5*21
105=7*15
106:
106=2*53
107:
108:
108=2*54
108=3*36
108=4*27
108=6*18
108=9*12
109:
110:
110=2*55
110=5*22
110=10*11
111:
111=3*37
112:
112=2*56
112=4*28
112=7*16
112=8*14
113:
114:
114=2*57
114=3*38
114=6*19
115:
115=5*23
116:
116=2*58
116=4*29
117:
117=3*39
117=9*13
118:
118=2*59
119:
119=7*17
120:
120=2*60
120=3*40
120=4*30
120=5*24
120=6*20
120=8*15
120=10*12素數:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113
合數
-module(learnerl).
-export([get_not_prime_nums/1]).
output_lst([Fst|Rst])->{X,Y}=Fst,io:format("~p=~p*~p ",[X,Y,X div Y]),output_lst(Rst);
output_lst([]) ->io:format("~n").get_not_prime_nums(MaxNum)->Result=[{X,Y}||X<-lists:seq(2,MaxNum),Y<-lists:seq(2,round(math:sqrt(X))),X rem Y =:= 0],io:format("~n合數:~n") ,output_lst(Result).
55> c
(learnerl
).
{ok,learnerl
}
56> learnerl:get_not_prime_nums
(20).合數:
4=2*2
6=2*3
8=2*4
9=3*3
10=2*5
12=2*6
12=3*4
14=2*7
15=3*5
16=2*8
16=4*4
18=2*9
18=3*6
20=2*10
20=4*5
ok
57>
與50位技術專家面對面20年技術見證,附贈技術全景圖
總結
以上是生活随笔為你收集整理的erlang(21)-列表推导与计算素数与合数的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。