এটা কি চেন প্রাইম?


27

একটি সংখ্যা একটি চেন প্রধান হিসাবে যদি এটি দুটি শর্ত পূরণ করে:

  • এটি নিজেই প্রধান
  • নিজে প্লাস টু হয় প্রধান বা আধা-প্রধান।

একটি প্রাইম এমন একটি সংখ্যা যেখানে এর ঠিক দুটি বিভাজক থাকে এবং এই বিভাজকগুলি নিজের এবং একটিতে থাকে।

একটি আধা-প্রাইম এমন একটি সংখ্যা যা দুটি প্রাইমের গুণফল। (দ্রষ্টব্য যে 12 = 2 * 2 * 3 আধা-প্রধান নয়, তবে 25 = 5 * 5 হয়)।

আপনার কাজটি কোনও সংখ্যাটি চেন প্রাইম কিনা তা নির্ধারণ করা। হ্যাঁর জন্য কোনও সত্যবাদী মান এবং না-এর জন্য কোনও মিথ্যা মান আউটপুট করা উচিত।

ইনপুটটি এর চেয়ে বড় বা সমান কোনও পূর্ণসংখ্যা হবে। এটি স্ট্রিং, চরিত্রের অ্যারে বা একটি অ্যারে বা অঙ্ক হিসাবেও নেওয়া যেতে পারে।

উদাহরণ:

101 -> truthy
223 -> falsy
233 -> truthy
1 -> falsy

এটি OEIS A109611

এটি আংশিকভাবে আমি কি সোফি জার্মেইনের প্রধান দ্বারা অনুপ্রাণিত ? যা দুর্ভাগ্যক্রমে, সদৃশ হিসাবে বন্ধ হয়ে গেছে, তাই আমি কিছুটা সম্পর্কিত চ্যালেঞ্জ পোস্ট করছি যা সদৃশ নয়।


আমরা কি Trueসত্যবাদী 2বা Falseমিথ্যা (বেমানান মিথ্যা মান) এর জন্য ফিরে আসতে পারি ?
মিঃ এক্সকোডার

@ মিঃ এক্সকোডার কখনই বলেননি যে আপনি পারবেন না
Okx

একটি আধা-প্রধানের জন্য, "ঠিক দুটি প্রধান কারণ" গুণকে গুণতে পারে? কি 2 * 2 * 2 * 3 * 3একটি আধা-প্রধানমন্ত্রী? কি হবে 5 * 5?
গাছ নয়

@ নোটাত্রি 5*5আধা-প্রধান, 2*2*2*3*3তা নয়। আমি বললাম ঠিক দুটো।
Okx

সুতরাং এটি গণনা গুণতে হবে, তারপর? (আপনি যুক্তি দিতে পারেন যে 2*2*2*3*3ঠিক দুটি প্রধান কারণ আছে, 2এবং 3, এবং 5*5একটি প্রধান উপাদান আছে, যথা 5।)) আপনি কি প্রশ্নটি সম্পাদনা করতে পারেন?
একটি গাছ নয়

উত্তর:


12

ব্র্যাচল্যাগ , 7 বাইট

ṗ+₂ḋl≤2

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

ব্যাখ্যা

ṗ         Input is prime       
   ḋ      The prime factorization of…
 +₂       … Input + 2…
    l≤2   … has 2 or less elements

1
আমি নিলকে ঠিক ৪৮,০০০ প্রতিনিধিতে ধরেছিলাম এবং এখন আপনি ঠিক ২২,২২২ তে আছেন: পি
ইটিএইচ প্রডাকশনস


6

আর্নল্ডসি , 1339 বাইট

LISTEN TO ME VERY CAREFULLY q
I NEED YOUR CLOTHES YOUR BOOTS AND YOUR MOTORCYCLE p
GIVE THESE PEOPLE AIR
HEY CHRISTMAS TREE c
YOU SET US UP 0
HEY CHRISTMAS TREE d
YOU SET US UP 0
HEY CHRISTMAS TREE l
YOU SET US UP p
STICK AROUND l
GET TO THE CHOPPER d
HERE IS MY INVITATION p
I LET HIM GO l
ENOUGH TALK
BECAUSE I'M GOING TO SAY PLEASE d
BULLSHIT
GET TO THE CHOPPER c
HERE IS MY INVITATION c
GET UP 1
ENOUGH TALK
YOU HAVE NO RESPECT FOR LOGIC
GET TO THE CHOPPER l
HERE IS MY INVITATION l
GET DOWN 1
ENOUGH TALK
CHILL
I'LL BE BACK c
HASTA LA VISTA, BABY
IT'S SHOWTIME
HEY CHRISTMAS TREE p
YOU SET US UP 0
GET YOUR ASS TO MARS p
DO IT NOW
I WANT TO ASK YOU A BUNCH OF QUESTIONS AND I WANT TO HAVE THEM ANSWERED IMMEDIATELY
HEY CHRISTMAS TREE n
YOU SET US UP 0
GET YOUR ASS TO MARS n
DO IT NOW q p
HEY CHRISTMAS TREE g
YOU SET US UP 42
GET TO THE CHOPPER g
HERE IS MY INVITATION n
YOU ARE NOT YOU YOU ARE ME 2
ENOUGH TALK
BECAUSE I'M GOING TO SAY PLEASE g
GET TO THE CHOPPER p
HERE IS MY INVITATION p
GET UP 2
ENOUGH TALK
GET YOUR ASS TO MARS n
DO IT NOW q p
GET TO THE CHOPPER g
HERE IS MY INVITATION 5
LET OFF SOME STEAM BENNET n
ENOUGH TALK
BECAUSE I'M GOING TO SAY PLEASE g
TALK TO THE HAND "t"
BULLSHIT
TALK TO THE HAND "f"
YOU HAVE NO RESPECT FOR LOGIC
BULLSHIT
TALK TO THE HAND "f"
YOU HAVE NO RESPECT FOR LOGIC
YOU HAVE BEEN TERMINATED

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

(কোডগল্ফ.এসইতে এটি আমার প্রথম পোস্ট, দয়া করে এটি আমাকে ভুলভাবে ফর্ম্যাট করা হয়েছে কিনা তা আমাকে জানান I আমি বুঝতে পারি যে এই বাইট গণনাটি প্রতিযোগিতামূলক নয়, এটি কেবল মজাদার জন্য))



5

পাইথ, 10 বাইট

&P_Q>3lP+2

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

কিভাবে?

&P_Q>3lP+2  # input: Q
        +2  # Q + 2
       P    # prime factors
    >3l     # length lower than 3?
 P_Q        # Q is prime?
&           # and both results

>। <আউটগল্ফড> <।
মিঃ এক্সকোডার

@ Mr.Xcoder আসলে, আমি আমার 5 মিনিট আগে পোস্ট করা হয়েছে
ঊরীয়েল

হ্যাঁ, ইন্টারনেটের দুর্বল সংযোগের কারণে এটি এটি
দেখেনি

3

সিম্পি সহ পাইথন ,  69  56 বাইট

-13 বাইটস আলেফাল্ফাকে ধন্যবাদ (সিম্পি 1.1 এ আপগ্রেড করে primeomega(n+2)এবং প্রতিস্থাপনের জন্য ব্যবহার করে sum(factorint(n+2).values()))

... গ্রিফোনের মুছে ফেলা জমা থেকে নেওয়া।

from sympy import*
lambda n:primeomega(n+2)<3*isprime(n)

একটি নামবিহীন ফাংশন Trueচেন প্রাইমস এবং Falseঅন্যথায় ফেরত ।

n+2এর প্রধান ফ্যাক্টরের গুণকগুলি যোগ করে এর কারণগুলি গণনা করে ।

নোটটি তুলনা করার আগেই 3গুণিত হয়েছে, সুতরাং অ-প্রাইমগুলির জন্য কোড পরীক্ষাগুলি যদি ফ্যাক্টরের চেয়ে কম থাকে (সর্বদা ফলনশীল ), প্রাইমটির জন্য এটি পরীক্ষা করা হয় যে প্রাইম বা আধা-মৌলিক কিনা ।isprime(n)<nn+20Falsenn+2


@ গ্রিফন - আমি দায়িত্ব গ্রহণ করেছি, তবে এটি কোনও আমদানি ছাড়াই মারতে পারে।
জোনাথন অ্যালান

আমি আউটগল্ফড হয়ে গেছি! 3*isprime(n)কৌতুক কি আমি কন্ডিশনাল স্টেটমেন্ট পরিষ্কার আপ খুঁজছেন হয়।
চেজ ভোগেলি

আহ, @ আইকোসেহেড্রন, আমি আপনার খেয়াল করিনি, দুঃখিত - এটি এতটা মিল যে আমি আপনাকে নিজের উন্নতিতে সহায়তা করার জন্য মন্তব্য করেছি have এই উত্তরটিকে এইরূপে নির্দ্বিধায় বিবেচনা করুন, কেবল আমাকে জানান এবং আমি এটি মুছে ফেলব।
জোনাথন অ্যালান

আমি মনে করি সিম্পির একটি প্রাইমোমেগা ফাংশন রয়েছে।
আলেফাল্ফ

@ এলফাল্ফ ধন্যবাদ, এটি দেখার জন্য মাত্র ১.১ এ আপগ্রেড করা হয়েছে, এটি বাইট সংরক্ষণ করবে!
জোনাথন অ্যালান


3

জাভা 8, 85 84 83 বাইট

n->{int a=n+2,b=0,c=0,i=1;for(;i++<n;b+=n%i<1?1:0)c+=a%i<1?1:0;return n>1&b<2&c<3;}

-1 বাইটস পুনরাবৃত্তির পরিবর্তে পুনরাবৃত্তি পদ্ধতির ব্যবহার করে @ অলিভিয়ারগ্রোওয়েরকে ধন্যবাদ জানায় ।

ব্যাখ্যা:

এখানে চেষ্টা করুন।

n->{            // Method with integer parameter and boolean return-type
  int a=n+2,    //  Start `a` at the input + 2
      b=0,c=0,  //  Start `b` and `c` at 0
      i=1;      //  Start `i` at 1
  for(;i++<n;   //  Loop from 1 to `n` (and raise `i` immediately by 1)
    b+=n%i<1?   //   If the input is divisible by `i`
        1       //    Raise `b` by 1
       :        //   Else:
        0)      //    Leave `b` as is
    c+=a%i<1?   //   If the input + 2 is divisible by `i`:
        1       //    Raise `c` by 1
       :        //   Else:
        0;      //    Leave `c` as is
                //  End of loop (implicit / single-line body)
  return n>1    //  Return if the input is larger than 1
         &b<2   //   And `b` is now smaller than 2
         &c<3;  //   And `c` is now smaller than 3
}               // End of method

পুনরাবৃত্ত সংস্করণ মাত্র একটি বাইট খাটো: n->{int N=n+2,f=0,F=0,d=1;for(;d++<n;f+=n%d<1?1:0)F+=N%d<1?1:0;return n>1&f<2&F<3;}
অলিভিয়ার গ্রাগোয়ার


2

জাভাস্ক্রিপ্ট (ES6), 63 61 বাইট

g=(e,i=e)=>i--<3?1:e%i?g(e,i):g(i)+1
f=e=>e>1&g(e)<2&g(e+2)<3
Test cases:<br><textarea id=i rows=6 oninput="go()">101&#10;223&#10;233&#10;1</textarea><br><pre id=q></pre><script>window.onload=function go(){document.getElementById('q').innerHTML=document.getElementById('i').value.split('\n').map(e=>e+' -> '+f(+e)).join('\n')}</script>

যুক্তি হিসাবে fগ্রহণ nকরে এবং ফলাফলটি দেয় এমন একটি ফাংশন সংজ্ঞায়িত করে । আমি কীভাবে gপরিণত তা নিয়ে খুব খুশি ; এটি একটি সংখ্যায় প্রধান কারণগুলির সংখ্যা গণনা করে।

2 বাইট কেভিন ক্রুইজসেনের কৌশলটির জন্য ধন্যবাদ সংরক্ষণ &করে।

Ungolfed

Ω = (n,          // Ω(n) = number of n's prime factors, n > 1.
    i = n) =>    // Start iterating from i = n - 1. Since we'll immediately
                 // decrement i, n is used here.
    --i          // Immediately decrement i.

    < 2          // If i = 0 or i = 1, n is a prime at this point.
    ? 1 :        // Therefore Ω(n) = 1.

    n % i != 0 ? // If n is not divisible by i,
    Ω(n, i)      // try again with i := i - 1 (immediately decremented, so use i).

    : Ω(i) + 1   // n is divisible by i. Since we're counting down from n - 1
                 // and i is the first such number, i is n's largest non-trivial
                 // divisor, and thus n/i is a prime.
                 // Therefore Ω(n) = Ω(i) + Ω(n/i) = Ω(i) + 1.

is_chen = n =>     // An integer n ≥ 1 is a Chen prime if and only if:
    n > 1          // n > 1,
    & Ω(n) < 2     // Ω(n) = 1 < 2, i.e. n is a prime, and
    & Ω(n + 2) < 3 // Ω(n + 2) < 3, i.e. n + 2 is a prime or a semiprime.

না আপনি উভয় পরিবর্তন করতে পারি &&করতে &? যেহেতু 0/1 জেএসেও সত্য / মিথ্যা মান রয়েছে?
কেভিন ক্রুইজসেন

@ কেভিন ক্রুইজসেন এটি কার্যকর বলে মনে হচ্ছে। খুব খারাপ |এবং &শর্ট সার্কিট করবেন না, এটি এতে আরও বেশি বাইট সংরক্ষণ করতে পারে g
পুর্কাকুডারী


2

পিএইচপি, 64 বাইট

for($i=$n=$argn+2;--$i;$argn%$i?:$q++)$n%$i?:++$p;echo$p<4^--$q;

কপি করে প্রিন্ট 0truthy জন্য, falsy জন্য অন্যান্য পূর্ণসংখ্যার। পাইপ হিসাবে চালান -nRবা এটি অনলাইনে চেষ্টা করুন

ভাঙ্গন

for($i=$n=$argn+2;--$i; # loop $i from N+1 to 1
    $argn%$i?:$q++)         # if $i divides N, increment $q
    $n%$i?:++$p;            # if $i divides N+2, increment $p
echo$p<4                # $p is 1 for a prime, 3 for a semiprime
    ^--$q;              # $q is 2 for prime; so this is 1^1 (==0) for a Chen Prime

ধারাবাহিক মিথ্যা মান, 65 বাইট:

for($i=$n=2+$k=$argn;--$i;$k%$i?:$q++)$n%$i?:++$p;echo$p<4&$q==2;

কপি করে প্রিন্ট 1truthy এবং 0falsy জন্য।


1

সিমপাইয়ের সাথে পাইথন 3 , 73 71 বাইট

lambda n:(sum(factorint(n+2).values())<3)&isprime(n)
from sympy import*

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


এটি এখানে আগে পোস্ট করা একটি উত্তরের আরও গল্ফযুক্ত সংস্করণ, তবে মনে হয় এটি মুছে ফেলা হয়েছে।


2 জোড় বাঁচানোর জন্য @ জোনাথন অ্যালানকে ধন্যবাদ!


1
... এছাড়াও নোট করুন যে আপনার প্রয়োজন নেই f=, একটি নামহীন ফাংশন তৈরি করা কোড-গল্ফের পক্ষে ঠিক।
জোনাথন অ্যালান


1

এপিএল NARS, 23 টি অক্ষর

{1≥⍵:0⋄(1=⍴π⍵)∧3>⍴π⍵+2}

এখানে 1 এর চেয়ে আলাদা factors এর উপাদানগুলির অ্যারেটি ফিরিয়ে দিন; কিছু পরীক্ষা:

  f←{1≥⍵:0⋄(1=⍴π⍵)∧3>⍴π⍵+2}
  f 101
1 
  f 223
0 
  f 233
1 
  f 1
0
  f ¯10
0

1

Regex (ECMAScript), 31 বাইট

^(?!((xx+)(\2(xx))*)(\1\4)+$)xx

এটি অনলাইন চেষ্টা করুন! (সমস্ত চেন প্রাইমস দেখানো হচ্ছে ≤ 1000)

এন x এর স্ট্রিং দেওয়া এই রেজেক্সটি মিলবে যদি কেবলমাত্র এন চেন প্রাইম হয়।

এটি দৃ 2 ়ভাবে দাবি করে যে এন 2 এর চেয়ে বড় এবং স্ট্রিংটি ফর্মের নয় যা ((xx+)(\2(xx))*)(\1\4)+
কতবার (\2(xx))পুনরাবৃত্তি হয় তার উপর নির্ভর করে এই রেজেক্সের দুটি অর্থ রয়েছে ।
যখন এটি 0 বার পুনরাবৃত্তি করা হয়, তখন রেজেক্সকে সরল করা যেতে পারে (xx+)\1+, যা সম্মিলিত সংখ্যার সাথে মেলে।
যখন এটি ইতিবাচক সংখ্যার পুনরাবৃত্তি হয়, তখন রেজেক্স সমান হয়((xx+)(\2xx)+)(\1xx)+

এই রেজেক্সের কিছু ব্যাখ্যা প্রয়োজন, তবে আমি সামান্য অন্তর্দৃষ্টি দেব।
আপনি যদি বীজগণিতের মধ্য দিয়ে যান তবে দেখতে পাবেন যে যেখানে ((xx+)(\2xx)+)(\1xx)+ফর্মের সংখ্যার সাথে মেলে । সুতরাং এটি মিলবে (প্রায়) যখনই এন +2 এর 2 টির বেশি মৌলিক কারণ রয়েছে। (অর্থাত্ প্রধান বা আধা-প্রধান নয়) নোট করুন যে এটি 6, 16 বা 25 এর সাথে মেলে না, তবে এটি কোনও ব্যাপার নয়, কারণ তারা সমস্ত সংমিশ্রিত।a*b*c-2a≥4,b≥2,c≥2

সুতরাং (?!((xx+)(\2(xx))*)(\1\4)+$)যতদিন ম্যাচ হবে যেমন এন যৌগিক নয়, এবং এন +2 পারেন প্রধানমন্ত্রী বা অর্ধ-প্রধানমন্ত্রী করা হয়।
দুর্ভাগ্যক্রমে এর মধ্যে 1 (এবং 0) অন্তর্ভুক্ত রয়েছে, তাই আমরা তখন যাচাই করি যে এন কমপক্ষে 2 সহ withxx

বিভিন্ন "31-বাইটার" একটি দম্পতি হলেন:

^xx(?!((x*)(\2xx)+)\1?(\1xx)*$)
^(?!(xx((x*)(\3xx)+))\2?\1*$)xx

1

রুবি , 49 41 বাইট

->n{/^(.?|((..+)\3+))(\2+|..)$/!~?l*n+=2}

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

-8 বাইটের জন্য এইচ.পি.উইজকে ধন্যবাদ

কিভাবে?

প্রথম জিনিস, 'l'পুনরাবৃত্তি এন + 2 বার একটি স্ট্রিং পান । তারপরে একটি রেজেক্স প্রয়োগ করুন কিনা তা পরীক্ষা করতে:

  • দৈর্ঘ্য 2 বা 3 (.?)(..)
  • দৈর্ঘ্যটি একটি সংমিশ্রণ সংখ্যা প্লাস 2 ((..+)\1)(..)
  • দৈর্ঘ্য কমপক্ষে 3 সংখ্যার একটি পণ্য ((..+)\2)\1+

2 রেজেক্স অংশগুলি একটি চতুর্থ কেস উত্পন্ন করে যা কোনও তাত্পর্যপূর্ণ নয় এবং এটি উপেক্ষা করা নিরাপদ (.?)\2+:, যেটি খালি স্ট্রিং বা একক চরিত্রের সাথে সমাধান করে কারণ \2খালি।


তুমি তোমার দুই অর্ধেক মার্জ করতে পারবেন |কাছাকাছি একসাথে: ^((..+)\2+)(\1+|..)$। এছাড়াও, আমার সাথে একই সময়ে আপনি
রেগেক্সের

আমি বিশ্বাস করি যে আপনি ইনপুটটি সর্বদা কমপক্ষে 1..?
H.PWiz

0

জুলিয়া, 59 বাইট

x->((0∉x%(2:x-1))&(length(find(x->x==0,(x+2)%(2:x)))<=2))


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