Phi'yi hesaplayın (Pi değil)


73

Hayır, demek istemiyorum ϕ = 1.618...ve π = 3.14159.... İşlevleri kastediyorum .

  • φ (x) daha az ya da eşit bir tamsayı sayısı xnispeten büyük asal olan x.
  • π (x) , eşit veya daha küçük primerlerin sayısıdır x.
  • Diyelim ki "pi değil" o zaman π̅ (x) 'dır ve ona eşit veya daha küçük bileşiklerin sayısı olarak tanımlar x.

Görev

Kesinlikle pozitif bir tamsayı verildiğinde x, φ (π̅ (x)) değerini hesaplayın . Puanlama bayt cinsindendir.

Örnekler

Her satır giriş (1-100, dahil) ve karşılık gelen çıktıdan boşlukla ayrılmış olarak oluşur.

1 0 
2 0 
3 0 
4 1 
5 1 
6 1 
7 1 
8 2 
9 2 
10 4 
11 4 
12 2 
13 2 
14 6 
15 4 
16 6 
17 6 
18 4 
19 4 
20 10 
21 4 
22 12 
23 12 
24 6 
25 8 
26 8 
27 16 
28 6 
29 6 
30 18 
31 18 
32 8 
33 12 
34 10 
35 22 
36 8 
37 8 
38 20 
39 12 
40 18 
41 18 
42 12 
43 12 
44 28 
45 8 
46 30 
47 30 
48 16 
49 20 
50 16 
51 24 
52 12 
53 12 
54 36 
55 18 
56 24 
57 16 
58 40 
59 40 
60 12 
61 12 
62 42 
63 20 
64 24 
65 22 
66 46 
67 46 
68 16 
69 42 
70 20 
71 20 
72 32 
73 32 
74 24 
75 52 
76 18 
77 40 
78 24 
79 24 
80 36 
81 28 
82 58 
83 58 
84 16 
85 60 
86 30 
87 36 
88 32 
89 32 
90 48 
91 20 
92 66 
93 32 
94 44 
95 24 
96 70 
97 70 
98 24 
99 72 
100 36

Herhangi bir giriş için beklenen çıktıyı hesaplamak için bu bağlantıyı kullanın . Ayrıca, giriş ve çıkışların için bir listesi x <= 1000verilmiştir pastebin burada . ( Bu Minkolang programı ile hazırlanmıştır .)


Liderler

Burada hem düzenli bir lider tablosu hem de kazananların dile göre genel bir bakış oluşturması için bir Stack Snippet'i var.

Cevabınızın göründüğünden emin olmak için, lütfen aşağıdaki Markdown şablonunu kullanarak cevabınızı bir başlık ile başlatın:

## Language Name, N bytes

nerede NGönderinizden boyutudur. Puanınızı artırmak varsa, olabilir onları içinden vurarak, başlığa eski hesapları tutmak. Örneğin:

## Ruby, <s>104</s> <s>101</s> 96 bytes

Başlığınıza birden fazla sayı eklemek istiyorsanız (örneğin, puanınız iki dosyanın toplamı olduğundan veya tercüman bayrağı cezalarını ayrı ayrı listelemek istediğiniz için), gerçek puanın başlıktaki son sayı olduğundan emin olun :

## Perl, 43 + 2 (-p flag) = 45 bytes

Dil adını, daha sonra büyük afiş snippet'inde görünecek bir bağlantı da yapabilirsiniz:

## [><>](http://esolangs.org/wiki/Fish), 121 bytes


Girişin boyutunda sınırlar var mı?
lirtosiast

4
Bu soru PhiNotPi kullanıcısına bir haraç mı?
primo

24
@primo Neden böyle düşünüyorsun?
Mego

2
@primo: Adından ilham almıştı ve kesinlikle ondan vazgeçti, ama tam olarak ona bir haraç değildi.
El'endia Starman 13:15

1
@ edc65: Evet, görünüşe göre dün öğrendim.
El'endia Starman 13:15

Yanıtlar:


27

GS2 , 12 10 bayt

V@'◄l.1&‼l

Kaynak kod CP437 kodlamasını kullanır . Çevrimiçi deneyin!

Test sürüşü

$ xxd -r -ps <<< 564027116c2e3126136c > phinotpi.gs2
$ wc -c phinotpi.gs2 
10 phinotpi.gs2
$ gs2 phinotpi.gs2 <<< 1000
552

Nasıl çalışır

V          Read an integer n from STDIN.
 @         Push a copy of n.
  '        Increment the copy of n.
   ◄l      Push 1 and call primes; push the list of all primes below n+1.
     .     Count the primes.
      1    Subtract the count from n.
       &   Decrement to account for 1 (neither prime nor composite).
        ‼l Push 3 and call primes; apply Euler's totient function.

25
Dosya adı programdan daha uzun.
Floris,

43

Regex (.NET), 122 113 bayt

^(?=((?=.*$(?<=^(\3+(.+.))(.*?(?>(.\4)?)))).)+(.*))((?=.*(?=\6$)(?<=(?!(.+.)\8*(?=\6$)(?<=^\8+))(.+?(?>\9?)))).)+

Girdi ve çıkışın aynı olduğu varsayılır ve çıkışın regex'in ana maçından alınır.

Regex'in Dağılımı:

  • ^(?=((?=.*$(?<=^(\3+(.+.))(.*?(?>(.\4)?)))).)+(.*)) π̅ (x) 'i hesaplar ve ikinci bölümde iddia için 6. gruptaki dizgenin kalanını yakalar.

    • .*$işaretçiyi dizenin sonuna getirir, böylece sayının xtamamını bir yönde alabiliriz.
    • (?<=^(\3+(.+.))(.*?(?>(.\4)?))) sağdan sola doğru eşleşir ve x'den 0'a dönerek bileşik sayısını kontrol eder.
      • (.*?(?>(.\4)?))ilk yinelemede 0'dan başlayan ve önceki yinelemedeki sayıdan devam eden ve x'e kadar dönen bir "değişken" dir. En küçük bileşik sayı 4 (.\4)?olduğundan, grup 4'ü yakalama uygunsa , hiçbir zaman eşleşmez.
      • ^(\3+(.+.))Yukarıdaki "değişken" ile geriye kalanları (yani x - "variable") bileşik sayı olup olmadığını kontrol eder.
  • ((?=.*(?=\6$)(?<=(?!(.+.)\8*(?=\6$)(?<=^\8+))(.+?(?>\9?)))).)+-(π̅ (x)) ile soldan sağa işlemlerini sınırlayarak hesaplar (?=\6$).

    • .*(?=\6$)işaretçiyi position (x) konumuna getirir. Y = π̅ (x) ifadesini kullanalım.
    • (?<=(?!(.+.)\8*(?=\6$)(?<=^\8+))(.+?(?>\9?))) sağdan sola doğru eşleşir ve (y - 1) - 0 arasında bir döngü yaparak göreceli asal olup olmadığını denetler
      • (.+?(?>\9?)) ilk yinelemede 1'den başlayan ve önceki yinelemedeki sayıdan devam eden ve y'ye kadar dönen bir "değişken" dir.
      • (?!(.+.)\8*(?=\6$)(?<=^\8+))soldan sağa 1 eşleşir ve "değişken" ve y'nin göreli asal olup olmadığını kontrol eder.
        • (.+.)\8*(?=\6$) 1'den büyük olan bir "değişken" bölenini seçer ve bir yan etki de solda y'nin tam sayısının olmasıdır.
        • (?<=^\8+) "değişken" böleninin aynı zamanda y'nin bölen olup olmadığını kontrol eder.

1 .NET'te ileriye dönük yön, geçerli yönü izlemek yerine, yönü LTR olarak ayarlar ; arkası , yönü tersine çevirmek yerine yönü RTL'ye ayarlar .

Regex'i RegexStorm'da test edin .

Revizyon 2, yakalanmayan grupları bırakır ve koşullu sözdizimi yerine atomik gruplar kullanır.


24
Efendim, kızgınız.
RK.

9
Sanırım Zalgo'dan bir dokunuşu var.
curiousdannii

11
Ve şimdi iki problemin var. (Cidden Regex ile bu tür bir şey yapabileceğini hiçbir fikrim yoktu ...)
Darrel Hoffman

21

J, 15 14 bayt

5 p:<:-_1 p:>:

Bu bir taktik, monadik fiil. J.Js ile çevrimiçi deneyin .

Nasıl çalışır

                Right argument: y
            >:  Increment y.
       _1 p:    Calculate the number of primes less than y+1.
    <:          Decrement y.
      -         Calculate the difference of the results to the left and right.
5 p:            Apply Euler's totient function to the difference.

14
Haz açıklama yapabilir miyim? : P
anOKsquirrel

23
i haz açıklama eklendi
Dennis

5
Çok fazla surat içerdiği için bunu aştığımı söylemek üzereydim, ama metin bana bunlardan kaçınmamı söyledi :(
Doddy

@Dennis: İlk cevabınız beni oldukça güldürdü, bunun için teşekkürler!
Mehrdad

19

Cidden , 27 bayt

,;R`p`MΣ(-D;n;;╟@RZ`ig1=`MΣ

Yay, CJam'ı yendim! Çevrimiçi deneyin

Açıklama ( ayığının en üstüne, bikinci kısmın en üst kısmına karşılık gelir):

,;       take input and duplicate it
R`p`MΣ   push sum([is_prime(i) for i in [1,...,a]]) (otherwise known as the pi function)
(-D      rotate stack right by 1, subtract top two elements, subtract 1, push
            (@ could be used instead of (, but I was hoping the unmatched paren would bother someone)
;n;;     dupe top, push a b times, dupe top twice (effectively getting a a+1 times)
╟        pop n, pop n elements and append to list, push
@        swap top two elements
RZ       push [1,...,a], zip a and b
`ig1=`   define a function:
  i        flatten list
  g1=      compute gcd(a,b), compare to 1 (totient function)
MΣ       perform the function a on each element of b, sum and push

Not: Bu cevabın gönderilmesinden bu yana, pi ve phi fonksiyonlarını Cidden olarak ekledim. İşte bu işlevlerle rekabetçi olmayan bir cevap:

,;▓1-@-▒

Açıklama (bazı komutlar diğerleriyle çakışmamak üzere kaydırılır):

,    get input (hereafter referred to as x)
;    duplicate x
 ▓   calculate pi(x) (we'll call this p)
1-   calculate 1-p
@-   bring x back on top, calculate x-1-p (not pi(x))
  ▒  calculate phi(not pi(x))

1
CİDDİ OUTGOLFED @Dennis var!
TanMath

Lütfen bunu başının üstünde bildiğini söyleme ..
DividedByZero 15:15

1
GJ CJam'ı yeniyor =)
saat

14

Julia, 52 50 bayt

x->count(i->gcd(i,p)<2,1:(p=x-endof(primes(x))-1))

Bu bir tamsayıyı kabul eden ve tamsayı yapan ve döndüren adsız bir işlev oluşturur. Aramak için bir isim verin, örneğin f=x->....

Ungolfed:

function phinotpi(x::Integer)
    # The number of composites less than or equal to x is
    # x - the number of primes less than or equal to x -
    # 1, since 1 is not composite
    p = x - length(primes(x)) - 1

    # Return the number of integers i between 1 and p such
    # that gcd(i, p) = 1. This occurs when i is relatively
    # prime to p.
    count(i -> gcd(i, p) == 1, 1:p)
end

Birkaç karakter kaydetmek için sumyerine kullanın count. Yine de biraz sinir bozucu - üstelleri saymanın diğer yolu sum(isprime,1:x), tam olarak aynı uzunluk endof(primes(x)).
Glen O

1
@GlenO Öneri için teşekkürler, fakat 0 puan sumalırken boş koleksiyonlar için başarısız olur. countBöylece sumistenen sonucu vermez x<4.
Alex A.

8

Mathematica, 24 bayt

EulerPhi[#-PrimePi@#-1]&

2
Of Tabii Mathematica içinde ... inşa tüm bu vardır
alkış

@ConfusedMr_C Açıkçası :) Ancak, açık bir nedenden ötürü diskalifiye edilmedi: matematiksel yazılım basit birleşimsel görevlerde golf oynamalarını yenemez :)
yo '

@ConfusedMr_C PhiNotPi@#&: 11 bayt: P
LegionMammal978 17:15

8

Pyth, 14 bayt

JlftPTSQ/iLJJ1

Gösteri , Doğrulayıcı

Basit bir filtre kullanarak kompozitler hesaplar, uzunluğunu alır ve kaydederiz J. Sonra biz gcd almak Jkadar her sayı ile Jve sonuçlar 1'e eşit kaç saymak.


7

Minkolang 0.11 , 12 bayt (rekabetçi değil)

Bu cevap rekabetçi değil. Soruyu göndermeden önce pi ve phi'yi yerleşik olarak kullandım, bu da bana haksız bir avantaj sağlıyor. Bunu sadece dile ilgi duyanlar için gönderiyorum.

nd9M-1-9$MN.

Burada dene.

açıklama

n      Read in integer from input
d      Duplicate
9M     Pops off the top of stack as x and pushes pi(x)
-      Subtracts the top two elements on the stack (x - pi(x))
1-     Subtracts 1 (x-1 - pi(x))
9$M    Pops off the top of stack as x and pushes phi(x) (phi(x-1 - pi(x)))
N.     Outputs as integer and stops.

2
Geçersiz cevaplar yayınlamanın iyi bir fikir olduğunu sanmıyorum ...
yeti

20
Feragatnameleri olduğu sürece, yanlış bir şey olduğunu sanmıyorum. Eski zorluklar için oldukça yaygındır.
Dennis

4
@yeti: Teknik olarak, geçersiz değil. Burada kullanılan özelliklerin tümü, zorluk bildirilmeden önce uygulandı. Sadece diskalifiye ediyorum, çünkü iki özel özellik uygulanıncaya kadar mücadeleyi göndermeyi geciktirdim (ki bu arada örnek listeleri oluşturmak için kullandım).
El'endia Starman,

1
Aynı. Updated Güncellemeye devam ettiğinde bunu çok yaparım.
Mama Fun Roll

6

CJam, 28 bayt

ri){mf1>},,_,f{){_@\%}h)=}1b

CJam tercüman bu keman deneyin ya da bir kerede tüm test durumlarını doğrulayın .

Nasıl çalışır

ri                            Read an integer N from STDIN.
  )                           Increment it. 
   {    },                    Filter; for each I in [0 ... N]:
    mf                          Push I's prime factorization.
      1>                        Discard the first prime.
                              If there are primes left, keep I.
          ,                   Count the kept integers. Result: C
           _,                 Push [0 ... C-1].
             f{          }    For each J in [0 ... C-1], push C and J; then:
               )                Increment J.
                {    }h         Do:
                 _                Push a copy of the topmost integer..
                  @               Rotate the integer below on top of it.
                   \%             Take that integer modulo the other integer.
                                If the residue is non-zero, repeat the loop.
                                This computes the GCD of C and J+1 using the
                                Euclidean algorithm.
                       )        Increment the 0 on the stack. This pushes 1.

                        =     Push 1 if the GCD is 1, 0 if not.
                          1b  Add all Booleans.

Ben "bütün davaları doğrulamak" bağlantısını çalıştı ve bu var: 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111. Bu doğru mu?
El'endia Starman,

Evet, kodu sol sütuna (giriş) uygulamanın sağ sütuna (çıkış) eşit olduğunu kontrol eder.
Dennis,

5
dis1 hakkında haz açıklama yapabilir miyim?
anOKsquirrel

9
@ hazOKsquirrel i haz dis1 2'yi açıkladı
Dennis

5
@Dennis kthxbai
anOKsquirrel 13:15

5

Python, 137 139

n=input()
print n,len([b for b in range(len([a for a in range(n)if not all(a%i for i in xrange(2,a))]))if all(b%i for i in xrange(2,b))])

2
Bence range(n) ifve arasındaki boşlukları kaldırarak 2 bayt tasarruf edebileceğinizi düşünüyorum])) if
DankMemes

3
Python'un nispeten düşük Golf yeteneği göz önüne alındığında (boşluk gereksinimleri nedeniyle vb.) Bu oldukça etkileyici!
felixphew

@DankMemes, bahşiş için teşekkürler!
wnnmaw

5

Retina , 48 bayt

.+
$*
M&`(..+)\1+$
.+
$*
(?!(..+)\1*$(?<=^\1+)).

Çevrimiçi deneyin!

açıklama

.+
$*

Girişi unary'ye dönüştürün.

M&`(..+)\1+$

Girdiden büyük olmayan birleşik sayıları, en az 2 faktörün en az iki tekrarından oluşan bir dizeyle ne kadar sıklıkla eşleştirebileceğimizi sayarak sayın.

.+
$*

Tekrar unary'e dönüştürün.

(?!(..+)\1*$(?<=^\1+)).

Böyle bir faktör bulursak o (aynı zamanda öneki bir faktör olduğu konumdan sonekin (en az 2) bir faktör bulmak mümkün değildir kaç pozisyon dan sayarak cp hesaplayınız sonra bu i <= nbir faktör ile paylaştığı nbu nedenle buna karşı değil. .Sonunda biz (böyle en az 2 faktör bulamıyorum) sıfır sayılmaz olmasını sağlar.


5

Regex (.NET), 88 86 bayt

^(?=((?=(..+)\2+$)?.)+)(?=(?<-2>.)*(.+))(?=(((?!(..+)\6*(?<=^\6+)\3$))?.)*\3)(?<-5>.)*

Çevrimiçi deneyin! (Bir Retina programı olarak.)

N Ih̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳'nin cevabıyla aynı G / Ç'yi kullanır , yani birleşik girdi ve sonucun uzunluğunun bir alt dizesiyle eşleşir.

Dengeleme gruplarından birini veya her ikisini de ileri referanslarla değiştirerek bunu daha da kısaltmak mümkün olabilir.

Aynı byte sayısındaki alternatif:

^(?=((?=(..+)\2+$)?.)+)(?=(?<-2>.)*(.+))(?=(?((..+)\4*(?<=^\4+)\3$).|(.))*\3)(?<-5>.)*

İlk yarı için bazı alternatifler de vardır, örneğin, kompozisyon numaraları için pozitif yerine negatif bir bakış açısı kullanmak veya aynı zamanda bir koşullu kullanmak.

açıklama

Dengeleme gruplarına ilişkin temel bir anlayışa sahip olduğunuzu kabul ediyorum , ancak kısacası, .NET'teki yakalama grupları yığınlar (yani yakalama grubunu her kullanışınızda yeni yakalama en üste itilir) ve (?<-x>...)yığıntan bir yakalama çıkar x. Bu şeyleri saymak için çok yararlıdır.

^                   # Only look at matches from the beginning of the input.
(?=                 # First, we'll compute the number of composites less than
                    # or equal to the input in group 2. This is done in a
                    # lookahead so that we don't actually advance the regex
                    # engine's position in the string.
  (                 #   Iterate through the input, one character at a time.
    (?=(..+)\2+$)?  #     Try to match the remainder of the input as a
                    #     composite number. If so the (..+) will add one
                    #     one capture onto stack 2. Otherwise, this lookahead
                    #     is simply skipped.
    .
  )+
)
(?=                 # It turns out to be more convienient to work with n minus
                    # the number of composites less than or equal to n, and to
                    # have that a single backreference instead of the depth of
                    # a stack.
  (?<-2>.)*         #   Match one character for each composite we found.
  (.+)              #   Capture the remainder of the input in group 3.
)
(?=                 # Now we compute the totient function. The basic idea is
                    # similar to how we computed the number of composites,
                    # but there are a few differences.
                    # a) Of course the regex is different. However, this one
                    #    is more easily expressed as a negative lookahead (i.e.
                    #    check that the values don't share a factor), so this
                    #    won't leave a capture on the corresponding stack. We
                    #    fix this by wrapping the lookahead itself in a group
                    #    and making the entire group optional.
                    # b) We only want to search up the number of composites,
                    #    not up to the input. We do this by asserting that we
                    #    can still match our backreference \3 from earlier.

  (                 #   Iterate through the input, one character at a time.
    ((?!            #     Try not to match a number that shares a factor with
                    #     the number of composites, and if so push a capture
                    #     onto stack 5.
      (..+)\6*      #     Look for a factor that's at least 2...
      (?<=^\6+)     #     Make sure we can reach back to the input with that
                    #     factor...
      \3$           #     ...and that we're exactly at the end of the number
                    #     of composites.
    ))?
    .
  )*
  \3                #   Match group 3 again to make sure that we didn't look
                    #   further than the number of composites.
)
(?<-5>.)*           # Finally, match one character for each coprime number we
                    # found in the last lookahead.


4

Jöle , rakipsiz

7 bayt Bu cevap, yarışmacı olmayan bir dili kullandığı için yarışmacı değil.

ÆC_@’ÆṪ

Nasıl çalışır

ÆC_@’ÆṪ  Input: n

ÆC       Count the primes less than or equal to n.
    ’    Yield n - 1.
  _@     Subtract the count from n - 1.
     ÆṪ  Apply Euler's totient function.

3

Octave, 52 51

@(b)nnz((d=[1:(c=b-1-nnz(primes(b)))])(gcd(d,c)<2))

Düzenleme: Thomas Kwa sayesinde 1 bayt kaydedildi

Açıklama:

@(b)                                            # Define anonymous func with parameter b
  nnz(                                          # Count elements in φ(c)
    (                                           #
      d = [1:                                   # Create d= array of 1 to π̅(b)
            ( c = b - 1 - nnz(primes(b)) )      # Calculate c=π̅(b) by subtracting the
                                                #  number of elements in the array of prime
          ]                                     #  numbers from the number of ints in 2:b
    )(gcd(d, c) < 2)                            # Calculate φ(c) by using gcd to filter
  )                                             # relative primes from d


3

SageMath 26 bayt

euler_phi(n-1-prime_pi(n))

Sage'in uygulaması sayesinde n=0ve hatta iyi çalışır n=1.





2

MATL , 9 bayt (rekabet etmeyen)

Dil mücadeleyi yayınladığı için bu cevap rekabet edici değil.

:Zp~sq_Zp

Dil / derleyicinin sürümünü (10.1.0) kullanır .

Çevrimiçi deneyin!

açıklama

:       % implicitly input a number "N" and produce array [1,2,...,N]
Zp      % true for entries that are prime
~       % negate. So it gives true for entries of [1,2,...,N] that are non-prime
s       % sum elements of array. So it gives number of non-primes
q       % subtract 1. Needed because number 1 is not prime, but not composite either
_       % unary minus
Zp      % with negative input, computes totient function of absolute value of input
        % implicit display

2

GAP, 33 Bayt

n->Phi(n-Number([-2..n],IsPrime))

Number(l,p)kaç elementin ltatmin edici olduğunu sayar p. 1'in asal veya kompozit olmadığı gerçeğini telafi etmek için n'den bir sayıdan n'ye kadar olan sayıları çıkarmam gerekir. -1İki bayt yapmak yerine , listeyi 1 veya 2 yerine -2 ile başlatıyorum, bu yüzden IsPrimesadece bir fazla bayt için asal sayılan bir sayı daha ekliyorum .


2

Python 3.5 - 130 bayt

from math import*
def p(n,k,g):
 for i in range(1,n+1):k+=factorial(i-1)%i!=i-1
 for l in range(1,k):g+=gcd(k,l)<2      
 return g

Fonksiyonu p (n, 0,0), sonra +3 bayt olarak geçirmek kabul edilebilir değilse.

Bu, bir sayının kompozit olup olmadığını kontrol etmek ve faktöriyel fonksiyon için matematik modülünü çağırmak zorunda kalmam için Wilson teoremini kullanmamdan yararlanır. Python 3.5 matematik modülüne bir gcd işlevi ekledi.

Kodun ilk döngüsü, eğer sayı kompozit ise ve bir başkasıyla 0 artarsa, k bir artar. (Wilson teoremi sadece 1'den büyük tamsayılar için geçerli olsa da, 1'i asal olarak ele alır, bu yüzden bunu kullanmamıza izin verir).

İkinci döngü daha sonra, kompozit sayısının aralığında dönecek ve sadece pi ve l değerleri eşzamanlı olmadığında g değerini artıracaktır.

g daha sonra n'ye eşit veya daha küçük olan bileşik sayıların sayısına eşit veya daha küçük olan değerlerin sayısıdır.



1

05AB1E , 11 8 bayt

LDpÈÏg<Õ

Çevrimiçi deneyin!

Bu rekabet olmayabilir - 05AB1E'nin ne zaman yapıldığını öğrenemiyorum.

Nasıl çalışır

L             # this gets us the list of numbers [1 .. a]
 D            # duplicates this list
  p           # applies isPrime to each element of the list, vectorised.
   È          # is the element even? (does 05AB1E not have a logical not?)
    Ï         # push elements of the first list where the same index in the 
              # second list is 1
     g<       # finds the length and subtracts 1 (as the list contains 1)
              # this is the not pi function
       Õ      # euler totient function

1

Pyt , 6 bayt

řṗ¬Ʃ⁻Ț

Açıklama:

                Implicit input
ř               Push [1,2,...,input]
 ṗ              [is 1 prime?, is 2 prime?, ..., is input prime?]
  ¬             [is 1 not prime?, is 2 not prime?, ... is input not prime?]
   Ʃ            Number of non-primes (sums the array - booleans implicitly converted to ints)
    ⁻           Subtract one to remove the counting of '1'
     Ț          Euler's totient function


Çevrimiçi deneyin!


1

APL NARS, 38 bayt, 19 karakter

{⍵≤3:0⋄13π¯1+⍵-2π⍵}

13π, totient işlevdir ve 2π, sayım asal işlevi <= bağımsız değişkenidir. Ölçek

  b←{⍵≤3:0⋄13π¯1+⍵-2π⍵}     
  (⍳12),¨b¨⍳12
1 0  2 0  3 0  4 1  5 1  6 1  7 1  8 2  9 2  10 4  11 4  12 2 
  (95..100),¨b¨(95..100)
95 24  96 70  97 70  98 24  99 72  100 36

1

++ , 21 bayt ekle

L,RþPbL1_dRdVÞ%bLG!!+

Çevrimiçi deneyin!

Nasıl çalışır

π¯(n)φ(n)π¯(n)φ(n)

π¯(n)

RþPbL1_

RþPþPbL1_x=π¯(n)

φ(n)

dRdVÞ%bLG!!+

xdRÞ%xxbL

n1nG!!

Evet, gerçekten yeni LaTex'i denemek istedim

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.