প্লাস প্রাইম বনাম মাইনাস প্রাইমস


35

আমাদের বেশিরভাগ লোকই জানেন ...

সমস্ত প্রাইম p>3ফর্ম হয় যে এখানে চিত্র বর্ণনা লিখুন

কিন্তু কতজন প্লাস primes ( 6n+1) এবং কতজন বিয়োগ primes ( 6n-1) একটি নির্দিষ্ট সীমার মধ্যে?

চ্যালেঞ্জ

একটি পূর্ণসংখ্যা দেওয়া k>5, গণনা কত primes<=kহয় PlusPrimes এবং কতগুলি হয় MinusPrimes

উদাহরণ

কারণ k=100আমাদের কাছে
[5, 11, 17, 23, 29, 41, 47, 53, 59, 71, 83, 89] 12 মাইনাসপ্রাইমস
এবং
[7, 13, 19, 31, 37, 43, 61, 67, 73, 79, 97] 11 টি প্লাসপ্রাইম রয়েছে

কারণ k=149আমাদের কাছে
[5, 11, 17, 23, 29, 41, 47, 53, 59, 71, 83, 89, 101, 107, 113, 131, 137, 149]
18 মাইনাসপ্রাইমস
এবং
[7, 13, 19, 31, 37, 43, 61, 67, 73, 79, 97, 103, 109, 127, 139]
15 টি প্লাসপ্রাইম রয়েছে

বিধি

আপনার কোডটি অবশ্যই 2 পূর্ণসংখ্যার আউটপুট দিতে হবে : মাইনাসপ্রাইমসের জন্য একটি এবং প্লাসপ্রাইমগুলির জন্য আপনার পছন্দ অনুযায়ী যে কোনও ক্রম (দয়া করে কোনটি নির্দিষ্ট করুন)।
এটি : বাইট জিততে সংক্ষিপ্ত উত্তর!

পরীক্ষার মামলা

ইনপুট -> আউটপুট [ মাইনাসপ্রাইমস , প্লাসপ্রাইমস ]

6->[1,0]  
7->[1,1]   
86->[11,10]  
986->[86,78]  
5252->[351,344]  
100000->[4806,4784]   
4000000->[141696, 141448]

45
আমি জানতাম না! :(
স্টিভি গ্রিফিন

13
@StewieGriffin, এটা যুক্তি তর্কের সহায্য নিয়ে প্রত্যক্ষ অনুভবের মাধ্যমে জানা সহজ যদি আপনি মডুলাস ক্রম তাকান আছে: 0%66 এর গুণিতক হয় 1%6নির্ধারণ করা যাবে না, 2%62 এর একটি একাধিক হয়, 3%63 একাধিক, 4%62 এর একটি একাধিক, এবং 5%6নির্ধারিত করা যাবে না।
zzzzBov

3
@zzzzBov যে সত্যিই সহায়ক হতে চাই যদি আমি জানতাম যে কেন মডুলাসের ক্রম রয়েছে, এবং এটি প্রাইমগুলির জন্য কী বোঝায় ... আমি উচ্চ বিদ্যালয়ের শিক্ষিত সংখ্যার তত্ত্বটি কামনা করি ...
সক্র্যাটিক ফিনিক্স

@ সোক্র্যাটিকফোনিক্স, মডুলাসের অর্থ "বিভাগের পরে অবশিষ্ট"। 0, 6, 12, ইত্যাদি সমস্ত 6 দ্বারা বিভাগের পরে 0 উত্পাদন করে; 1, 7, 13 সমস্ত উত্পাদন করে 1. যেহেতু আমরা এমন সংখ্যার সন্ধান করছি যা কারণগুলিতে বিভক্ত হতে পারে না, এটি জেনে যে সংখ্যাটি 1 এর চেয়ে বেশি পূর্ণসংখ্যার দ্বারা বিভাজ্য হয় তা আমাদের বলে যে সংখ্যাটি প্রাথমিক নয়।
zzzzBov

উত্তর:


10

05 এ বি 1 ই , 10 9 বাইট

এরিক দ্য আউটগল্ফারকে ধন্যবাদ 1 বাইট সংরক্ষিত

আউটপুট হিসাবে [PlusPrimes, MinusPrimes]

LDpÏ6%5Ñ¢

এটি অনলাইন চেষ্টা করুন! বা টেস্ট স্যুট হিসাবে

ব্যাখ্যা

L             # push range [1 ... input]
 DpÏ          # keep only primes
    6%        # mod each by 6
      5Ñ      # divisors of 5 [1, 5]
        ¢     # count

6

এমএটিএল , 10 বাইট

Zq6\!5lh=s

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা

Zq     % Implicitly input k. Push row vector of primes up to k
6\     % Modulo 6, element-wise
!      % Transpose into a column vector
5lh    % Push row vector [5, 1]
=      % Is equal?, element-wise with broadcast
s      % Sum of each column. Implicitly display

6

পাইথন 2 , 77 বাইট

-2 বাইট ধন্যবাদ নীলকে

lambda x:[sum(all(n%j for j in range(2,n))for n in range(i,x,6))for i in 7,5]

এটি অনলাইন চেষ্টা করুন!

পূর্ববর্তী সমাধান, 83 81 79 বাইট

-১ বাইট ধন্যবাদ মিঃ এক্সকোডারকে
-২ বাইট ধন্যবাদ হ্যাভার্ড হুমেলের কাছে

lambda x:map([all(n%i for i in range(2,n))*n%6for n in range(4,x)].count,[5,1])

এটি অনলাইন চেষ্টা করুন!
উভয় আউটপুট [মাইনাসপ্রাইমস, প্লাসপ্রাইমস] হিসাবে





আমি অনেকগুলি জাভাস্ক্রিপ্ট অ্যারে উপলব্ধি করেছি - আমি ভুলে গিয়েছিলাম যে পাইথন তালিকার প্রায়শই প্রয়োজন হয় না []
নিল

সুতরাং, আপনি n কে i থেকে শুরু করে n-1 তে সমস্ত সংখ্যার দ্বারা ভাগ করে দেখুন এটি প্রাইম কিনা, তারপরে সমস্ত পূর্ণসংখ্যা তৈরি করে (5,11, ...) এবং (7,13, ...) এবং পরীক্ষা করে যদি প্রশ্নে নম্বর আছে, এবং তাদের গণনা। দক্ষ বলে মনে হচ্ছে। ;)
ইয়াক্ক

5

জেলি , 7 বাইট

s6ÆPSm4

প্লাস, তারপর বিয়োগ

এটি অনলাইন চেষ্টা করুন!

কিভাবে এটা কাজ করে

s6ÆPSm4  Main link. Argument: n

s6       Split [1, ..., n] into chunks of length 6.
  ÆP     Test all integers for primality.
    S    Sum across columns.
         This counts the primes of the form 6k + c for c = 1, ..., 6.
     m4  Take every 4th element, leaving the counts for 6k + 1 and 6k + 5.

5

গণিত, 51 বাইট

(s=#;Mod[Prime~Array~PrimePi@s,6]~Count~#&/@{5,1})&

এটি অনলাইন চেষ্টা করুন!

@ এনজিনিসিস এটি 4 গানের বাট সাশ্রয় করেছে

গণিত, 47 বাইট

sPrime~Array~PrimePi@s~Mod~6~Count~#&/@{5,1}

Modইনফিক্সও হতে পারে এবং আপনি যদি প্রথম যুক্তির sনাম sPrime~Array~PrimePi@s~Mod~6~Count~#&/@{5,1}
লিখতে চলেছেন তবে

5

জাপট , 15 13 11 বাইট

আউটপুট অর্ডার হয় [+,-]

õj ò6 yx ë4

এটা পরীক্ষা করো

  • ডেনিসের জেলি সলিউশন থেকে কিছুটা অনুপ্রেরণা নিয়েছে কিন্তু গল্ফ করার পরে এটি বন্দর হওয়ার কাছাকাছি এসে গেছে।
  • 2 বাইট সংরক্ষিত অলিভার আমার ëকাছে অ্যারেগুলির জন্য পূর্ব-অজানা-আমার কাছে পদ্ধতি আনার জন্য ধন্যবাদ ।

ব্যাখ্যা

পূর্ণসংখ্যার অন্তর্নিহিত ইনপুট U

õj

õ1 থেকে শুরু করে একটি পূর্ণসংখ্যার অ্যারে তৈরি করুন Uএবং প্রতিটি jবুলিয়ানের একটি অ্যারে প্রদান করে প্রত্যেকটি প্রাইম ( ) কিনা তা পরীক্ষা করুন ।

ò6

6 টির দৈর্ঘ্যের উপ-অ্যারেগুলিতে অ্যারেটিকে ভাগ করুন।

yx

ট্রান্সপোজ ( y) এবং কলামগুলি যোগ করুন।

ë4

অ্যারের প্রতিটি চতুর্থ উপাদান পান এবং সুস্পষ্টভাবে তাদের আউটপুট পান।


আসল, 19 17 16 15 বাইট

õ fj
5â £è_%6¥X

এটা পরীক্ষা করো

  • অলিভারের 5 টি বিভাজনগুলি ব্যবহার করার জন্য অলিভারের দ্বারা অনুপ্রাণিত পরামর্শের জন্য 1 বাইট ধন্যবাদ আমি 15 টি অ্যারেতে বিভক্ত হয়ে আমার বিজয়ীর উপর বিশ্রাম নিলাম।


3

রেটিনা , 53 51 বাইট

.+
$*
1
$`1¶
G`1111
A`^(11+)\1+$
1{6}

*M`111
\b1\b

এটি অনলাইন চেষ্টা করুন! ব্যাখ্যা:

.+
$*

অ্যানারিতে রূপান্তর করুন।

1
$`1¶

1 থেকে শুরু করে গণনা করুন n

G`1111

4 এর চেয়ে কম নম্বর মুছুন।

A`^(11+)\1+$

সম্মিলিত নম্বর মুছুন।

1{6}

বাকি মডিউল 6 নিন।

*M`111

3 এবং 5 এর মধ্যে একটি বাকী সহ সংখ্যা সংখ্যা মুদ্রণ করুন।

\b1\b

1 এর বাকী সংখ্যা সহ সংখ্যাটি মুদ্রণ করুন।


3

রুবি, 61 60 বাইট

( -rprimesপতাকাটির জন্য 52 বাইট + 8 )

->n{[1,5].map{|x|(4..n).count{|i|i.prime?&&i%6==x}}}

ফর্মের অ্যারে [প্লাস প্রাইমস, বিয়োগ প্রাথমিকগুলি] প্রদান করে।

1 টি বাইট সংরক্ষিত হয়েছে জিবি ধন্যবাদ!

এটি অনলাইনে চেষ্টা করুন।


আমি আপনার উত্তরটি দ্বারা অনুপ্রাণিত হয়েছি এবং আমার আপডেট হয়েছে (হাসকেলে)!
jferard

@ জেফেরার্ড শুনে আমি খুব আনন্দিত! :)
খ্রিস্টিয়ান লুপাস্কু

আপনি countস্প্ল্যাট অপারেটর ছাড়াই ব্যাপ্তিটিতে ব্যবহার করতে পারেন (1 বাইট সংরক্ষণ করুন)।
জিবি

3

পার্ল 6 , 42 বাইট

অকেজো স্থান সরিয়ে 1 বাইট সংরক্ষণ করা হয়েছে ...

কলটি পুনর্গঠন করে 2 বাইট সংরক্ষণ করা হয়েছে map - @ জোশুয়া ধন্যবাদ।

.round সমান 3 বাইট সংরক্ষণ করা হয়েছে.round: 1

প্রকৃতপক্ষে জটিল সূচকটি দুর্দান্ত তবে খুব ব্যয়বহুল বৈশিষ্ট্যযুক্ত। এটি খনন করে 10 বাইট সংরক্ষণ করা হয়েছে ...

{[+] map {.is-prime*($_%6-1??i!!1)},5..$_}

এটি অনলাইন চেষ্টা করুন!

এটি জটিল ক্ষতিকারক সংস্করণ ছিল। (এটি মুছতে আমি এটি খুব পছন্দ করি)) নতুন সংস্করণটি ঠিক একইভাবে কাজ করে, কেবল জটিল সূচকটি আরও সংক্ষিপ্ত টার্নারি অপারেটর দ্বারা প্রতিস্থাপিত হয়।

{[+] map {.is-prime*exp(π*($_%6-1)i/8).round},5..$_}

এটি অনলাইন চেষ্টা করুন!

আউটপুট একটি জটিল সংখ্যা (PlusPrimes) + (MinusPrimes)i। আমি আশা করি এটি নিয়মের বিরুদ্ধে খুব বেশি নয় not


ব্যাখ্যা: এটি এমন একটি ফাংশন যা একটি পূর্ণসংখ্যার যুক্তি নেয়। আমরা 5 থেকে আর্গুমেন্ট ( (5..$_)) পর্যন্ত সমস্ত পূর্ণসংখ্যার উপর পুনরাবৃত্তি করি । এগুলির প্রত্যেকের জন্য, আমরা মূল্যায়ন করি .is-prime(এটি বলা হয়$_ করি (ম্যাপযুক্ত ব্লকের যুক্তিটি ), এটির (পক্ষে ) বা (জন্য ) True == 1, False == 0তৈরি করা জটিল ক্ষতিকারক দ্বারা এটি (সংখ্যাযুক্ত হলে) গুণিত করি এবং শেষ পর্যন্ত এটিকে গোল করে ফেলি নিকটতম পূর্ণসংখ্যা তাদের সংক্ষেপে ফলাফল দেয়।exp(0) = 1$_%6 = 1exp(iπ/2) = i$_%6 = 5[+]

পরিশেষে: এটি সত্যিই দক্ষ, সুতরাং আমি নিশ্চিত নই যে আপনি উচ্চতর সংখ্যার জন্য আপনার আউটপুট পাওয়ার আগে টিআইওর সময় শেষ হয়নি কিনা (1e5 এর জন্য, এটি আমার মেশিনে 26 সেকেন্ড সময় নেয়, এবং টিআইও কিছুটা ধীর হতে পারে)।


সেটা ঠিক আছে. ভাল করেছ!

আমি মনে করি আপনি দক্ষ বলতে চান ? দুর্দান্ত পদ্ধতি যদিও!
জোনাথন অ্যালান

এটি ব্যঙ্গাত্মক :—) এ অশোধিত প্রচেষ্টা ছিল।
Ramillies

গল্ফ করার সময় এর পদ্ধতি ফর্মগুলি ব্যবহার করে mapবা grepকখনও কখনও আপনাকে কয়েকটি অক্ষর দিতে হয়। এটি 2 টি চরিত্র সাশ্রয় করে:{[+] map {.is-prime*exp(π*($_%6-1)i/8).round: 1},5..$_}
জোশুয়া

এখানে তা করতে ভুলে গেছেন, এটি আমার নজরে আনার জন্য ধন্যবাদ!
Ramillies

2

আসলে , 21 বাইট

u5x`p░⌠6@%1=;`╖*ƒ⌡Ml╜

এটি অনলাইন চেষ্টা করুন!

প্লাসপ্রাইমসকে প্রথমে আউটপুট দেয়, তারপরে মাইনাসপ্রাইমস থাকে

ব্যাখ্যা:

u5x`p░⌠6@%1=;`╖*ƒ⌡Ml╜
u5x                    range(5, n+1)
   `p░                 primes in range
      ⌠6@%1=;`╖*ƒ⌡M    for each prime:
       6@%               mod 6
          1=             equal to 1
            ;`╖*ƒ        execute ╖ if p%6==1 (add 1 to register 0, consuming p)
                   l   length of resulting list (MinusPrimes)
                    ╜  push value in register 0 (PlusPrimes)


2

ম্যাটল্যাব 2017 এ, 29 বাইট

sum(mod(primes(k),6)'==[5,1])

ব্যাখ্যা: primes(k)কে পর্যন্ত সমস্ত প্রাইমস পাওয়া যায়। mod(primes(k),6)'সমস্ত প্রাইমগুলির মডিউলাস 6 নেয় এবং এটিকে স্থানান্তর করে যাতে যোগফলটি সঠিক মাত্রার সাথে চালিত হয়। ==[5,1]প্রথম কলামে সমস্ত পাঁচটি (মাইনাসপ্রাইমস) 1 এবং সমস্ত কলামে (প্লাসপ্রাইমস) দ্বিতীয় কলামে 1 সেট করে।sum()প্রতিটি কলামের যোগফল।

এই ফলাফল [minusPrime, plusPrime]


2

জাপট , 18 16 বাইট

-২ বাইটস @ অলিভারকে ধন্যবাদ

õ_j ©Z%6
5â £è¥X

এটি অনলাইন চেষ্টা করুন!

বিন্যাসে আউটপুট [PlusPrimes, MinusPrimes]


হুম ... আমি ঠিক আমার ডেস্কে ফিরে এলাম, খনিটি 17 বাইটে নামিয়ে দিয়েছি এবং পরে আপনি এই পোস্টটি দেখতে চাইছেন ... জানেন না যে আমার এটি পোস্ট করা উচিত কিনা তা নয় যেহেতু আমাদের উভয় সমাধানের ক্রোকটি ম্যাপিং করছে is [5,1]গণনা পেতে এবং আপনি সেখানে প্রথম পেয়েছেন।
শেগি

@ শেগি আইএমও আপনার সমাধানের আলাদা পোস্টে থাকার যথেষ্ট পার্থক্য রয়েছে। আপনি fইল্টার এবং একটি স্ট্রিং ব্যবহার করেছেন; আমি ম্যাপিং ফাংশন õএবং একটি অ্যারে ব্যবহার করেছি। পাশাপাশি, আমি [5,1]অন্য উত্তর থেকে ধারণা পেয়েছি ।
জাস্টিন মেরিনার ২

আমি এ নিয়ে কিছুটা ভাবব; অনুরূপ পদ্ধতি ব্যবহার করে বিভিন্ন ভাষায় সমাধানগুলি (যদিও এটি অন্যের কাছ থেকে "ধার করা" থাকে) ঠিক আছে তবে একই ভাষায় 2 টি সমাধান আমার সাথে পুরোপুরি ভালভাবে বসে না। আমি আপাতত বিকল্প হিসাবে আমার পোস্টে সম্পাদনা করেছি।
শেগি

আমি এটি দিয়ে চালানোর সিদ্ধান্ত নিয়েছি এবং তারপরে অন্য একটি বাইট বন্ধ করে দিয়েছি।
শেগি

আপনি পেতে ব্যবহার করতে পারেন[1,5]
অলিভার

2

সি #, 202 179 174 বাইট

-২৩ বাইটস মিঃ এক্সকোডারকে ধন্যবাদ

-5 বাইটস সাইওসকে ধন্যবাদ

ফাংশন যা 2 দৈর্ঘ্যের অ্যারে দেয়, [MinusPrimes, PlusPrimes] কল করে এক্সিকিউট করে a(n)

int[]a(int n){int[]r={0,0};for(int i=5;i<=n;i++)if(i%2*b(i)>0)if(i%6<5)r[1]++;else++r[0];return r;}int b(int n){for(int i=3;i-2<Math.Sqrt(n);i+=2)if(n%i<1)return 0;return 1;}

এটি চেষ্টা করুন অনলাইনে সঠিকভাবে ফর্ম্যাট কোড: এখানে


আপনি একটি টিও লিঙ্ক যুক্ত করতে পারেন?
মিঃ এক্সকোডার

বাইট-টু-বাইট, 194 বাইট গল্ফ করার জন্য দুঃখিত:public int[]a(int n){int[]r=new int[2];for(int i=5;i<=n;i++)if(i%2*b(i)>0)if(i%6<5)r[1]++;else++r[0];return r;}public int b(int n){for(int i=3;i<=Math.Sqrt(n)+1;i+=2)if(n%i<1)return 0;return 1;}
মিস্টার এক্সকোডার

193 বাইট:public int[]a(int n){int[]r=new int[2];for(int i=5;i<=n;i++)if(i%2*b(i)>0)if(i%6<5)r[1]++;else++r[0];return r;}public int b(int n){for(int i=3;i-2<Math.Sqrt(n);i+=2)if(n%i<1)return 0;return 1;}
মিঃ এক্সকোডার

lmao youre
love it you

1
সমস্ত সাহায্যের জন্য ধন্যবাদ, যেহেতু আপনি একটি পৃথক উত্তর পোস্ট করেছেন এবং এটি আমার একটি গল্ফ বলেছেন, তাই আমি কেবল আমার মত ছেড়ে
চলেছি


1

পাইথ , 15 বাইট

/K%R6fP_TSQ5/K1

পরীক্ষা স্যুট.

পাইথ , 16 বাইট

m/%R6fP_TSQd,1 5

পরীক্ষা স্যুট.


কিভাবে?

ব্যাখ্যা # 1

/ কে% R6fP_TSQ5 / কে 1 - সম্পূর্ণ প্রোগ্রাম।

     fP_TSQ - প্রাইমগুলি পরিসীমাতে [1 ... ইনপুট] ফিল্টার করুন।
  % আর 6 - প্রতিটি 6 টি মোড।
 কে - তাদের কে একটি ভেরিয়েবল কে বরাদ্দ করুন।
/ 5 - কেতে 5 এর উপস্থিতি গণনা করুন।
            / কে 1 - কেতে 1 এর উপস্থিতি গণনা করুন।
                - স্পষ্টতই ফলাফল আউটপুট।

ব্যাখ্যা # 2

মি /% R6fP_TSQd, 1 5 - সম্পূর্ণ প্রোগ্রাম।

     fP_TSQ - প্রাইমগুলি পরিসীমাতে ফিল্টার করুন [1 ... ইনপুট]
  % আর 6 - প্রতিটি 6 টি মোড।
            , 1 5 - তালিকাটি পুশ করুন [1, 5]
মি / ডি - সেখানে প্রতিটি কত আছে তা গণনা করুন।  
                 - স্পষ্টতই ফলাফল আউটপুট। 

বিকল্প:

/ কে% R6fP_TSQ5 / KhZ (16 বাইট)
কে% R6fP_TSQ / কে 5 / কে 1 (16 বাইট)
মি /% R6fP_TSQdj15T (16 বাইট)
m /% R6fP_TSQd [1 5 (16 বাইট)   
মি /% R6fP_TSQdsM`15 (17 বাইট)
মি /% R6.MP_ZSQd, 1 5 (17 বাইট)
মি /% R6.MP_ZSQdj15T (17 বাইট)
m /% R6.MP_ZSQd [1 5 (17 বাইট)

2
10 কে অভিনন্দন !!
লুইস মেন্ডো

@ লুইস মেন্ডো আপনাকে অনেক ধন্যবাদ :-)
মিঃ এক্সকোডার

1

জেলি ,  12 11  10 বাইট

আড্ডায় কিছু টিপস দেওয়ার জন্য @ কায়ারডকয়েনেরিংহিংকে ধন্যবাদ । আড্ডায় একটি বাইট সংরক্ষণ করার জন্য @ ডেনিসকে ধন্যবাদ Thanks

ÆR%6ċЀ1,5

এটি অনলাইন চেষ্টা করুন!

জেলি , 11 বাইট

ÆR%6µ1,5=þS

এটি অনলাইন চেষ্টা করুন!

জেলি , 11 বাইট

ÆR%6µċ5,ċ1$

এটি অনলাইন চেষ্টা করুন!


কিভাবে কাজ করে?

ব্যাখ্যা # 1

ÆR%6ċЀ1,5   As usual, full program.

ÆR           Get all the primes in the range [2...input].
  %6         Modulo each by 6.
       1,5   The two-element list [1, 5].
    ċЀ      Count the occurrences of each of ^ in the prime range.

ব্যাখ্যা # 2

ÆR%6µ1,5=þS   As usual, full program.

ÆR            Get all the primes in the range [2...input].
  %6          Modulo each by 6.
    µ         Chain separator.
     1,5      The two-element list [1, 5].
        =     Equals?   
         þ    Outer product.     
          S   Sum.

ব্যাখ্যা # 3

ÆR%6µċ5,ċ1$   As usual, full program.

ÆR            All the primes in the range [2...input].
  %6          Modulo each by 6.
    µ     $   Some helpers for the chains.
       ,      Two element list.
     ċ5       The number of 5s.
        ċ1    The number of 1s.

1

জাভা 8, 141 140 138 106 101 100 96 94 81 বাইট

n->{int r[]={0,0},c;for(;n-->4;r[n%6/4]+=c)for(c=n;c>1;c=c-1&~n%c>>-1);return r;}

একটি চ্যালেঞ্জ বিবরণ তুলনায় দুই মান পূর্ণসংখ্যা-বিন্যস্ত বিপরীত অনুক্রমে ফেরত পাঠায়:
[plusPrime, minusPrime]

@ Xynos এর সি # উত্তর বন্দর , আমি 39 40 42 বাইট গল্ফ করার পরে । অন্য বিশাল -৫৫ বাইটের জন্য @ নেভির
কাছ থেকে বিশাল সহায়তা ।

ব্যাখ্যা:

এখানে চেষ্টা করুন। (চূড়ান্ত পরীক্ষার ক্ষেত্রে 400000060 সেকেন্ডের সময়সীমাটি সামান্য ছাড়িয়ে গেছে))

n->{                   // Method with integer parameter and integer-array return-type
  int r[]={0,0},       //  Return integer-array, starting at [0,0]
      c;               //  Temp integer
  for(;n-->4;          //  Loop (1) as long as the input is larger than 4
                       //  and decrease `n` by 1 before every iteration
      r[n%6/4]+=c)     //    After every iteration, increase the plus or minus prime by `c`
                       //    (where `c` is either 0 or 1)
    for(c=n;           //   Reset `c` to `n`
        c>1;           //   And inner loop (2) as long as `c` is larger than 1
      c=               //    Change `c` to:
        c-1&~n%c>>-1;  //     inverting the bits of `n`,                    [~n]
                       //     modulo-`c` that result,                       [%c]
                       //     then bit-shift right that by -1,              [>>-1]
                       //     and then bitwise-AND that result with `c-1`   [c-1&]
    );                 //   End of inner loop (2)
                       //  End of loop (1) (implicit / single-line body)
  return r;            //  Return result integer-array
}                      // End of method

1
106 বাইট:n->{int r[]={0,0},i=4,j,c;for(;i++<n;){for(j=c=1;j*j<i;)c=i%(j+=2)<1?0:c;if(i%2*c>0)r[i%6%5]++;}return r;}
নেভায়ে

1
101 বাইট:n->{int r[]={0,0},i=4,j,c;for(;i++<n;r[i%6%5%2]-=-i%2*c>>-1)for(j=c=1;j*j<i;)c|=i%(j+=2)-1;return r;}
নেভায়ে

1
96 বাইট: n->{int r[]={0,0},i=4,j,c;for(;i++<n;r[i%6%5%2]+=i&c)for(j=c=1;j*j++<i;)c&=-i%++j>>-1;return r;}(-1 আপনাকে ধন্যবাদ j++,++j)
নেভায়ে

1
94 বাইট: n->{int r[]={0,0},i=4,j,c;for(;i++<n;r[i%6/4]+=i&c)for(j=c=1;j*j++<i;)c&=-i%++j>>-1;return r;}( [plusPrime, minusPrime])।
নেভায়ে

1
81 বাইট:n->{int r[]={0,0},c;for(;n-->4;r[n%6/4]+=c)for(c=n;c>1;)c=c-1&~n%c>>-1;return r;}
নেভায়ে

1

জাভাস্ক্রিপ্ট (ES6), 83 82 80 68 66 বাইট

একটি সম্পূর্ণ পুনরাবৃত্তি সমাধান বেরিয়েছে একটি অ্যারে ম্যাপিংয়ের চেয়ে অনেক খাটো!

আউটপুট অর্ডার হয় [-,+]। 3490 এর কোথাও ওভারফ্লো ত্রুটির সাথে ক্রপস আউট।

f=(n,a=[0,0])=>n>4?f(n-1,a,(g=y=>n%--y?g(y):y<2)(n)&&++a[n%6%5]):a

চেষ্টা করে দেখুন

o.innerText=(

f=(n,a=[0,0])=>n>4?f(n-1,a,(g=y=>n%--y?g(y):y<2)(n)&&++a[n%6%5]):a

)(i.value=6);oninput=_=>o.innerText=i.value>5?f(+i.value):[0,0]
<input id=i min=6 type=number><pre id=o>


0

সিজেম , 19 বাইট

ri){mp},6f%_5e=p1e=

প্রোগ্রাম যা STDIN থেকে ইনপুট নেয় এবং STDOUT এর মাধ্যমে নিউলাইন দ্বারা পৃথক দুটি সংখ্যা আউটপুট করে।

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

ri){mp},6f%_5e=p1e=

ri                        Read integer k
  )                       Add 1
       ,                  Filter the (implicit) array [0 1 ... k] ...
   {mp}                   ... on the function "is prime"
         f                Map over the resulting array...
          %               ... the function "modulus" ...
        6                 ... with extra parameter 6
           _              Duplicate the resulting array
             e=           Count occurrences ...
            5             ... of number 5
               p          Print with newline
                 e=       Count occurrences ...
                1         ... of number 1. Implicitly display

0

আর + সংখ্যা , 66 60 58 40 বাইট

-16 বাইট জারকো ডাবলডামকে ধন্যবাদ! আমি পরে আরও দুটি বাইট বন্ধ গল্ফ।

cat(table(numbers::Primes(4,scan())%%6))

প্রিন্ট PlusPrimes MinusPrimesটু স্টডআউট; স্টাডিন থেকে পড়া।

tableমানটির ক্রমবর্ধমান ক্রম অনুসারে এর ইনপুট ভেক্টরের মানগুলির প্রতিটি সংখ্যার গণনা ট্যাবলেট করে। সুতরাং, যেহেতু কেবলমাত্র দুটি মান রয়েছে, যথা: 1এবং 5(6 mod মডেল ), এটি ঠিক একইভাবে আমাদের প্রয়োজন ফাংশনnumbers::Primes , যা ইনপুটটির মধ্যে সমস্ত প্রাইম 4দেয়।

এটি অনলাইন চেষ্টা করুন!

বেস আর , 97 91 89 86 65 বাইট

এখানেও জারকো সংরক্ষণ করেছেন একগুচ্ছ বাইটস

function(n)table((5:n)[sapply(5:n,function(x)all(x%%2:x^.5))]%%6)

এটি প্যাকেজটি ব্যবহার না করে বেস বেসের সমস্ত প্রাইমগুলি গণনা করে এটি উপরের মতো প্রায় অভিন্ন, এবং এটি মুদ্রণ না করে ফাংশন আউটপুট দ্বারা ফিরে আসে। আপনি আউটপুটে দেখতে পাচ্ছেন যে এটি নামের সাথে একটি সারণী দেয়1 এবং5 নীচের সংখ্যাটি দিয়ে।

এটি অনলাইন চেষ্টা করুন!



(ডেনিস টিআইওতে সংখ্যা যুক্ত করেছে, এখন এটি কার্যকর হয় :))
জেএডি


all(x%%2:x^.5>0)কিছু অশূন্য ইতিমধ্যে truthy, তাই all(x%%2:x^.5)কাজ করে
JAD

@ জারকো ডাবডেলডাম খুব সুন্দর! সমস্ত মানগুলি যেহেতু আমরা তার চেয়ে বেশি ছাড়িয়ে যেতে পারি সেহেতু 4দেখা যাচ্ছে >4যেহেতু আমাদের 2আর কোনও প্রাইম হিসাবে থাকবে না, সুতরাং এই গল্ফগুলি পরিবর্তে 40 বাইটে চলে যাবে।
জিউসেপ


0

জাভাস্ক্রিপ্ট (স্পাইডারমনকি) , 151 , 140 , 131 বাইট

n=>[...Array(n+1).keys()].splice(5).filter(a=>!/^1?$|^(11+?)\1+$/.test("1".repeat(a))).reduce((r,a)=>(a%6<2?r[1]++:r[0]++,r),[0,0])

এটি অনলাইন চেষ্টা করুন!

বাগ ফিক্স এবং গল্ফিংয়ে সাহায্য করার জন্য শেগিকে ধন্যবাদ।

ব্যাখ্যা:

n=>                                                   // Create a lambda, taking n
    [...Array(n+1).keys()]                            // Create a list from 0 to n+1
        .splice(5)                                    // remove first five elements
        .filter(a=>                                   // filter the list to get primes
             !/^1?$|^(11+?)\1+$/.test("1".repeat(a))) // using the famous regex here: https://stackoverflow.com/questions/2795065/how-to-determine-if-a-number-is-a-prime-with-regex 
        .reduce((r,a)=>                               // reduce the list
           (a%6<2?r[1]++:r[0]++,r),                   // by counting plus primes
           [0,0])                                     // and minus primes

1
Retturns 17,15149 জন্য (হওয়া উচিত 18,15)। আপনার অ্যারের আকার 1: টিআইও দিয়ে বাড়ানো দরকার । ঘটনাচক্রে, এটি কেবল "ভ্যানিলা" ইএস 6, এতে স্পাইডারমনকি নির্দিষ্ট কিছু নয়। এছাড়াও, আপনি টিআইওর পরিবর্তে জেএসের জন্য স্ট্যাক স্নিপেট ব্যবহার করতে পারেন। এবং, আপনার অনেকগুলি জায়গা রয়েছে যা আপনি মুছে ফেলতে পারেন।
ঝাঁকুনি

1
আপনাকে আরও 131 বাইটে নামিয়ে আনার জন্য আপনার জন্য আরও দ্রুত সঞ্চয় সঞ্চয় ।
শেগি

@ শেগি আমি বুঝতে পারি নি আপনি এরকম হ্রাস ব্যবহার করতে পারেন।
পিওরফেরেট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.