পরিবর্তনশীল প্রধানমন্ত্রী "যমজ"


18

আমি আমার ভাইয়ের সাথে 2/3 যমজ, অর্থাৎ একই মাসের একই দিনে কিন্তু বারো বছর পরে জন্মগ্রহণ করেছি। যখন আমি 5 বছর ছিলাম, তখন তিনি 17 বছর বয়সী ছিলেন; আমরা উভয় যুগে যুক্তিসঙ্গতভাবে গণনা করতে পারি [71, 83] আমরা উভয়েই জীবিত এবং এই কাকতালীয় জয়ন্তী উদযাপন করতে সক্ষম।

কার্য

একটি কোড তৈরি করুন

  • ইনপুট হিসেবে দুটি পূর্ণসংখ্যার লাগে: কাউন্টার এবং একটি ধনাত্মক পূর্ণসংখ্যা হিসাবে "যমজ" এর মধ্যে পার্থক্য (ভাল হ্যাঁ, আমি ছোট নই) এবং উপরের একটি ধনাত্মক পূর্ণসংখ্যা হিসাবে আবদ্ধ তোমার দর্শন লগ করা (রানটাইম বিবেচনা)

  • এবং আউটপুট দেয় অ্যারের হিসাবে বা সমস্ত আই সংখ্যার কম বা সমান ইউ এর জন্য যার জন্য আমি এবং i + কে উভয়ই প্রাইম। আউটপুটটি বাছাই করার দরকার নেই।

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

12, 1000 -> [5, 7, 11, 17, 19, 29, 31, 41, 47, 59, 61, 67, 71, 89, 97, 101, 127, 137, 139, 151, 167, 179, 181, 199, 211, 227, 229, 239, 251, 257, 269, 271, 281, 337, 347, 367, 389, 397, 409, 419, 421, 431, 449, 467, 479, 487, 491, 509, 557, 587, 601, 607, 619, 631, 641, 647, 661, 727, 739, 757, 761, 797, 809, 811, 827, 907, 929, 941, 971, 997]
2, 999 -> [3, 5, 11, 17, 29, 41, 59, 71, 101, 107, 137, 149, 179, 191, 197, 227, 239, 269, 281, 311, 347, 419, 431, 461, 521, 569, 599, 617, 641, 659, 809, 821, 827, 857, 881]
3, 1500 -> [2]
30, 1500 -> [7, 11, 13, 17, 23, 29, 31, 37, 41, 43, 53, 59, 67, 71, 73, 79, 83, 97, 101, 107, 109, 127, 137, 149, 151, 163, 167, 181, 193, 197, 199, 211, 227, 233, 239, 241, 251, 263, 277, 281, 283, 307, 317, 337, 349, 353, 359, 367, 379, 389, 401, 409, 419, 431, 433, 449, 457, 461, 479, 491, 541, 547, 557, 563, 569, 571, 577, 587, 601, 613, 617, 631, 643, 647, 653, 661, 709, 727, 739, 743, 757, 797, 809, 823, 827, 829, 853, 857, 877, 881, 907, 911, 937, 941, 947, 953, 967, 983, 991, 1009, 1019, 1021, 1031, 1033, 1039, 1061, 1063, 1087, 1093, 1123, 1151, 1163, 1171, 1187, 1193, 1201, 1229, 1249, 1259, 1277, 1289, 1291, 1297, 1399, 1409, 1423, 1429, 1451, 1453, 1459, 1481, 1493]

সম্পাদন করা

যেহেতু আমি উপরের সীমাটি নির্দিষ্ট করতে ব্যর্থ, সুতরাং সমেত এবং একচেটিয়া উভয় সমাধানই স্বাগত।

2 নং সম্পাদনা করুন

চ্যালেঞ্জটি শুরু থেকে এক সপ্তাহ আগে 1 সেপ্টেম্বর শেষ হয়।
দেখে মনে হচ্ছে আমাদের বিজয়ী আছে তবে টাই জনপ্রিয়তার ক্ষেত্রে টাই-ব্রেকার; এক্ষেত্রে "দ্বিতীয় "টিকে অনুগ্রহের মাধ্যমে ক্ষতিপূরণ দেওয়া হবে।


উত্তর:



6

ব্র্যাচল্যাগ , 27 23 বাইট

:1f
hS,?tye.:S+:.L*$pL,

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

সমস্ত টেস্টকেস যাচাই করুন।

পূর্বাভাস 0 (প্রধান ভবিষ্যদ্বাণী)

:1f                     Find all solutions of predicate 1
                        given Input as Input,
                        Unify Output with the set of all solutions.

ভবিষ্যদ্বাণী 1 (সহায়ক ভবিষ্যদ্বাণী)

hS,?tye.:S+:.L*$pL,

hS                      the first element of Input is S,
   ?tye.                Output is an element between 0 and
                        the last element of Input,
       .:S+:.L          The list [Output+S,Output] is L,
             L*$pL      The product of L, prime-factorized, is still L



4

অক্টাভা, 34 33 বাইট

@(k,u)(a=primes(u))(isprime(a+k))

দুর্দান্ত পন্থা! এটি আমাকে আমার উত্তরে 11 থেকে 8 বাইট হ্রাস করতে দিয়েছিল
লুইস মেন্ডো

4

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

@ অ্যালিফালফাকে তার পদ্ধতির জন্য কৃতিত্ব , যা আমাকে 3 বাইট সংরক্ষণ করতে সহায়তা করেছিল

Zqti+Zp)

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

Zq    % Take input implicitly. Vector of primes up to that. Call this vector A
ti+   % Duplicate, take second input, add element-wise. Call this vector B
Zp    % Vector containing true for prime numbers in B
)     % Use as an index into A. Display implicitly

4

পাইথন 3, 114 92 90 বাইট

-2 বাইটের জন্য @ ডেনিসকে ধন্যবাদ

def f(k,u):
 i=P=1;l={0}
 while i<u+k:l|={P%i*i};P*=i*i;i+=1
 return{i-k for i in l}&l-{0}

একটি ফাংশন যা আর্গুমেন্টের মাধ্যমে ইনপুট নেয় এবং একটি নিরবচ্ছিন্ন সেট দেয়। এটি উপরের সীমাটি সম্মানের সাথে একচেটিয়া।

এটি প্রাইমগুলি খুঁজে পেতে এখানে @ xnor এর উত্তরের পদ্ধতিটি ব্যবহার করে ।

আইডিয়নে চেষ্টা করে দেখুন

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

প্রধান সন্ধান

আমরা প্রথম একটি পরীক্ষা মান ইনিশিয়ালাইজ iএবং একটি পণ্য Pহিসাবে 1, এবং মৌলিক সংখ্যার একটি তালিকা lধারণকারী সেট হিসাবে 0। তারপরে, আদিমতার জন্য পরিসরের whileসমস্ত মানগুলির পরীক্ষা করে এমন একটি লুপ কার্যকর করা হয়। ধারণাটি হ'ল প্রতিটি পুনরাবৃত্তির শেষে গুণ করে , পরীক্ষা করার সময় মান গ্রহণ করে , অর্থাত্ পূর্ণসংখ্যার গুণফলের স্কোয়ার হয়। প্রকৃত প্রাথমিকতা পরীক্ষা তারপর গণনা দ্বারা সঞ্চালিত হয় ; যদি এটি শূন্যটি ফিরে আসে, তবে এটি প্রধান হতে পারে না কারণ এটি সূচিত করে যে পণ্যটিকে অন্তত একটি মান দ্বারা বিভাজ্য। যদি এই ফিরে আসে , তবেi[1, u+k-1]Pi^2P(i-1)!^2i[1, i+1]P mod iii1iএটি অবশ্যই প্রধান হতে হবে যেহেতু এটি পণ্যের কোনও মান দ্বারা বিভাজ্য নয়। যদি iপ্রধান হয় তবে এটি সংযুক্ত করা হয় l, এবং যদি না 0হয় তবে সংযোজন করা হয়। পণ্যের স্কোয়ারিং 4প্রাইম হিসাবে ভুয়া পরিচয় সনাক্ত করতে বাধা দেয় এবং এখানে কার্যকর কারণ এটি গ্যারান্টি দেয় যে কেবল 0বা 1ফেরত আসবে, কেবলমাত্র পছন্দটিকে ফলাফল দ্বারা গুণিত করার মাধ্যমে মানটির পছন্দ সংযোজন করা যায় i

'যমজ' প্রাইমগুলির সনাক্তকরণ

আমরা এখন একটি বিভাজন সেট তৈরি করি l-k, উপাদান অনুসারে সমস্ত উপাদান সমন্বিত। এই সেটটির ছেদটি এবং lএরপরে এটি ব্যবহার করে পাওয়া যায় &, যা উভয় সেটে সাধারণ উপাদান যুক্ত একটি সেট রেখে দেয় leaves একটি সংখ্যা iকেবল উভয় সেটে থাকে যদি উভয়ই হয় iএবং i+kপ্রধান হয়, যার অর্থ এটি পছন্দসই আউটপুট ছেড়ে দেয়। তবে, যদি kএটি প্রাইম হয় তবে 0উভয় সেটে উপস্থিত থাকবেন , তার মানে এটি ফেরানোর আগে অবশ্যই মুছে ফেলা উচিত।


2
k,u=input();i=P=1;l={0};exec'l|={P%i*i};P*=i*i;i+=1;'*(u+k);print{i-k for i in l}&lপাইথন 2 এ 83 বাইটের জন্য কাজ করে 3 এমনকি 3-তে, এইভাবে একটি সেট তৈরি করা কিছু বাইট সংরক্ষণ করতে পারে।
ডেনিস

@ ডেনিস ধন্যবাদ - পাইথন ৩-এ এটি কয়েকটি বাইট সংরক্ষণ করতে পারে তবে যাইহোক, আমাকে 0চূড়ান্ত সেট থেকে সরিয়ে ফেলতে হয়েছিল, যেহেতু যদি kপ্রধান হয় তবে এই ভুল করে ফিরে আসবে
দ্য বাইকিংভিকিং

3

আর, 98 বাইট

function(k,u){v=c();for(i in 1:u)if(sum(i%%(1:i)==0)==2&&sum((i+k)%%(1:(i+k))==0)==2){v=c(v,i)};v}

অসমাপ্ত:

function(k,u)
v=c()                                                    #Empty vector

for(i in 1:u)
    if(sum(i%%(1:i)==0)==2&&sum((i+k)%%(1:(i+k))==0)==2) #If both i and i+k only have 
                                                         #2 divisors such as the rest of the 
                                                         #euclidian division is 0 
                                                         #(i.e., they're both prime) :
        v=c(v,i)
v


2

জাভা 7, 185 175 বাইট

import java.util.*;List c(int k,int u){List l=new ArrayList();for(int i=1;++i<u;)if(p(i)&p(i+k))l.add(i);return l;}boolean p(int n){for(int i=2;i<n;)n=n%i++<1?0:n;return n>1;}

অবরুদ্ধ এবং পরীক্ষার কোড:

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

import java.util.*;
class M{
  static List c(int k, int u){
    List l = new ArrayList();
    for(int i = 1; ++i < u; ){
      if(p(i) & p(i+k)){
        l.add(i);
      }
    }
    return l;
  }

  static boolean p(int n){
    for(int i = 2; i < n; ){
      n = n % i++ < 1
           ? 0
           : n;
    }
    return n>1;
  }

  public static void main(String[] a){
    System.out.println(c(12, 1000));
    System.out.println(c(2, 999));
    System.out.println(c(3, 1500));
    System.out.println(c(30, 1500));
  }
}

আউটপুট:

[5, 7, 11, 17, 19, 29, 31, 41, 47, 59, 61, 67, 71, 89, 97, 101, 127, 137, 139, 151, 167, 179, 181, 199, 211, 227, 229, 239, 251, 257, 269, 271, 281, 337, 347, 367, 389, 397, 409, 419, 421, 431, 449, 467, 479, 487, 491, 509, 557, 587, 601, 607, 619, 631, 641, 647, 661, 727, 739, 757, 761, 797, 809, 811, 827, 907, 929, 941, 971, 997]
[3, 5, 11, 17, 29, 41, 59, 71, 101, 107, 137, 149, 179, 191, 197, 227, 239, 269, 281, 311, 347, 419, 431, 461, 521, 569, 599, 617, 641, 659, 809, 821, 827, 857, 881]
[2]
[7, 11, 13, 17, 23, 29, 31, 37, 41, 43, 53, 59, 67, 71, 73, 79, 83, 97, 101, 107, 109, 127, 137, 149, 151, 163, 167, 181, 193, 197, 199, 211, 227, 233, 239, 241, 251, 263, 277, 281, 283, 307, 317, 337, 349, 353, 359, 367, 379, 389, 401, 409, 419, 431, 433, 449, 457, 461, 479, 491, 541, 547, 557, 563, 569, 571, 577, 587, 601, 613, 617, 631, 643, 647, 653, 661, 709, 727, 739, 743, 757, 797, 809, 823, 827, 829, 853, 857, 877, 881, 907, 911, 937, 941, 947, 953, 967, 983, 991, 1009, 1019, 1021, 1031, 1033, 1039, 1061, 1063, 1087, 1093, 1123, 1151, 1163, 1171, 1187, 1193, 1201, 1229, 1249, 1259, 1277, 1289, 1291, 1297, 1399, 1409, 1423, 1429, 1451, 1453, 1459, 1481, 1493]


2

গণিত, 43 বাইট

(Prime@Range@PrimePi@#2+#)~Select~PrimeQ-#&

উপরের সীমা থেকে কম বা সমান সমস্ত প্রাইম তৈরি করুন। ফলাফলের সাথে বয়সের পার্থক্য যুক্ত করুন। তাদের মধ্যে প্রাথমিক সংখ্যা নির্বাচন করুন। বয়সের পার্থক্যকে ফলাফলটিতে বিয়োগ করুন।


2

সুইফ্ট, 142 বাইট

func f(a:Int,b:Int)->Array<Int>{let p={(n:Int)->Int in([Int]()+(2..<n)).filter{n%$0<1}.count}
return([Int]()+(2...b)).filter{p($0)+p($0+a)<1}}

2

পার্ল 6 ,  39  37 বাইট

->\k,\u{grep {($_&$_+k).is-prime},2..u}
->\k,\u{grep {($_&$_+k).is-prime},^u}

ব্যাখ্যা:

-> \k, \u {

  # find all the values
  grep

  # where
  {
    # 「all」 junction of the two values
    ( $_   &   $_ + k ) # 「 all( $_, $_ + k ) 」

    # autothread a method call against the junction
    .is-prime
  },

  # from the values up to (and excluding) 「u」
  ^ u # short for 「 0 ..^ u 」
  # for inclusive use 「 2 .. u 」

}


1

প্রকৃতপক্ষে , 12 বাইট

ইনপুটটি uতখন k। গল্ফিং পরামর্শ স্বাগত জানাই। এটি অনলাইন চেষ্টা করুন!

╖R`;p@╜+p*`░

Ungolfing:

╖              Store k in register 0.
 R             Range [1..u]
  `       `░   Start a function f and push values i of the range where f(i) is truthy.
   ;p@         Duplicate i, check if i is prime, and swap with the other i.
      ╜+p      Push k, add to i, check if i+k is prime.
         *     Multiply the two if results together.
                 Similar to logical AND. 1 if both are true, else 0.

1

আর, 104 বাইট

পোস্ট করা অন্য আর সমাধানের বিপরীতে, এটি স্টিডিনের কাছ থেকে ইনপুট নেয়।

s=scan();sapply(1:s[2],function(i){j=i+s[1];if((all(i%%(3:i-1)!=0)|i==2)&all(j%%(3:j-1)!=0))cat(i," ")})

Ungolfed:

s=scan();        # Read from stdin
sapply(1:s[2],   # For i from 1 to u,
    function(i){     # apply this function:
        j=i+s[1];                # Define i+k
        if((all(i%%(3:i-1)!=0)   # Test if i is prime
           | i==2)               # (i is prime if i==2)
           & all(j%%(3:j-1)!=0)) # Test if i+k is prime
        cat(i," ")               # If i and i+k are prime, print i
    }
)

1

জাভাস্ক্রিপ্ট (ES6), 90 83 80 75 বাইট

(k,u)=>(r=n=>n++<u+k?r(P[P.every(i=>n%i)*n]=n):P.filter(n=>P[n+k]))(1,P=[])

উদাহরণ:

let F =
(k,u)=>(r=n=>n++<u+k?r(P[P.every(i=>n%i)*n]=n):P.filter(n=>P[n+k]))(1,P=[])

console.log(F(2, 999))


1

পাইথ, 13 বাইট

f&P_TP_+ThQSe

এমন একটি প্রোগ্রাম যা ফর্মের তালিকার ইনপুট নেয় [k, u]এবং একটি তালিকা মুদ্রণ করে।

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

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

f&P_TP_+ThQSe  Program. Input: Q
           Se  1-indexed range up to Q[1], yielding [1, 2, 3, ..., u]
f              Filter that, using variable T, by:
  P_T           T is prime
 &              and
     P_+ThQ     T+Q[0], i.e. T+k, is prime
               Implicitly print
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.