মিস ফরমেট


31

ফার্মের শেষ উপপাদ্যটি বলে যে কারও a^n + b^n = c^nজন্য সমীকরণের কোনও ইতিবাচক, অবিচ্ছেদ্য সমাধান নেই n>2। এটি 1994 সালে অ্যান্ড্রু ওয়াইলসের দ্বারা সত্য প্রমাণিত হয়েছিল।

যাইহোক, অনেকগুলি "নিকটবর্তী মিস" রয়েছে যা প্রায় ডায়োফ্যান্টাইন সমীকরণকে সন্তুষ্ট করে তবে একে একে মিস করে। অবিকল, এগুলি সমস্ত 1 এর চেয়ে বড় এবং a^3 + b^3 = c^3 + 1এটি ক্রমগুলি ক্রমবর্ধমান ক্রমের সাথে সমীকরণের প্রতিটি পক্ষের মান।

এই ক্রমের nপ্রথম nমানগুলি মুদ্রণ করতে আপনার কার্য দেওয়া হয়েছে ।

এখানে ক্রমের প্রথম কয়েকটি মান রয়েছে:

1729, 1092728, 3375001, 15438250, 121287376, 401947273, 3680797185, 6352182209, 7856862273, 12422690497, 73244501505, 145697644729, 179406144001, 648787169394, 938601300672, 985966166178, 1594232306569, 2898516861513, 9635042700640, 10119744747001, 31599452533376, 49108313528001, 50194406979073, 57507986235800, 58515008947768, 65753372717929, 71395901759126, 107741456072705, 194890060205353, 206173690790977, 251072400480057, 404682117722064, 498168062719418, 586607471154432, 588522607645609, 639746322022297, 729729243027001

এটি , তাই বাইটের মধ্যে সংক্ষিপ্ততম কোড !



1
প্রথমটি রামানুজনের এন.ইউইউইকিপিডিয়া.আর / উইকি / টেক্সিক্যাব_নম্বার । সি, oeis.org/A050791 এর ক্রম সহায়ক হতে পারে।
জলি জোকার

উত্তর:


14

জেলি , 16 বাইট

*3‘
ḊŒc*3S€ċǵ#Ç

নিষ্ঠুর শক্তি সমাধান। এটি অনলাইন চেষ্টা করুন!

*3‘           Helper link. Maps r to r³+1.

ḊŒc*3S€ċǵ#Ç  Main link. No arguments.

         µ    Combine the links to the left into a chain.
          #   Read an integer n from STDIN and execute the chain to the left for
              k = 0, 1, 2, ... until n matches were found. Yield the matches.
Ḋ             Dequeue; yield [2, ..., k].
 Œc           Yield all 2-combinations of elements of that range.
   *3         Elevate the integers in each pair to the third power.
     S€       Compute the sum of each pair.
        Ç     Call the helper link, yielding k³+1.
       ċ      Count how many times k³+1 appears in the sums. This yields a truthy 
              (i.e., non-zero) integer if and only if k is a match.
           Ç  Map the helper link over the array of matches.

8

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

:{#T#>>:{:3^}aLhH,Lb+.-H,#T=,}y

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

এটি সম্পূর্ণরূপে নিষ্ঠুর শক্তি নয় কারণ এটি সীমাবদ্ধতা ব্যবহার করে। এটি টিআইওতে কিছুটা ধীরে (প্রায় 20 সেকেন্ডের জন্য N = 5)। আমার মেশিনে প্রায় 5 সেকেন্ড N = 5এবং 13 সেকেন্ড সময় নেয় N = 6

ব্যাখ্যা

:{                           }y    Return the first Input outputs of that predicate
  #T                               #T is a built-in list of 3 variables
    #>                             #T must contain strictly positive values
      >                            #T must be a strictly decreasing list of integers
       :{:3^}aL                    L is the list of cubes of the integers in #T
              LhH,                 H is the first element of L (the biggest)
                  Lb+.             Output is the sum of the last two elements of L
                     .-H,          Output - 1 = H
                         #T=,      Find values for #T that satisfy those constaints

8

পার্ল, 78 বাইট

#!perl -nl
grep$_<(($_+2)**(1/3)|0)**3,map$i**3-$_**3,2..$i++and$_-=print$i**3+1while$_

নিষ্ঠুর শক্তি পদ্ধতির। শেবাংকে দুটি হিসাবে চিহ্নিত করে স্টিডিনের কাছ থেকে ইনপুট নেওয়া হয়।

নমুনা ব্যবহার

$ echo 10 | perl fermat-near-miss.pl
1729
1092728
3375001
15438250
121287376
401947273
3680797185
6352182209
7856862273
12422690497

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


7

গণিত, 95 বাইট

(b=9;While[Length[a=Select[Union@@Array[#^3+#2^3&,{b,b},2],IntegerQ[(#-1)^3^-1]&,#]]<#,b++];a)&

একক ধনাত্মক পূর্ণসংখ্যার আর্গুমেন্ট গ্রহণ #এবং পছন্দসই #পূর্ণসংখ্যার একটি তালিকা ফিরিয়ে দেওয়া নামহীন ফাংশন । মানব পাঠযোগ্যতার জন্য ব্যবধানযুক্ত:

1  (b = 9; While[
2    Length[ a =
3      Select[
4        Union @@ Array[#^3 + #2^3 &, {b, b}, 2],
5        IntegerQ[(# - 1)^3^-1] &
6      , #]
7    ] < #, b++
8  ]; a) &

লাইন 4 বাছাই করা ক্রমে 2 এবং b+1 ( b=91 লাইনে সূচনা সহ ) এর মধ্যে পূর্ণসংখ্যার কিউবের সমস্ত সম্ভাব্য পরিমাণ গণনা করে । 3-5 রেখাগুলি এই পরিমাণগুলি থেকে কেবল সেইগুলি বেছে নেয় যা নিখুঁত ঘনক্ষেত্রের চেয়ে আরও একটি বেশি; line লাইনে সর্বাধিক #মানগুলিতে সীমাবদ্ধ থাকে যা সঞ্চিত থাকে a। তবে এই তালিকায় যদি #মানগুলির তুলনায় আসলে কিছু কম থাকে তবে While1-7 রেখার লুপগুলিতে লুপটি bআবার চেষ্টা করে। অবশেষে, লাইন 8 আউটপুটa একবার এটি সঠিক দৈর্ঘ্য।

পবিত্র নরক এই সংস্করণ ধীর! একটি অতিরিক্ত বাইটের জন্য, আমরা b++লাইন to তে পরিবর্তন b*=9করতে এবং কোডটি যথাযথ সময়ে চালিত করতে পারি (প্রকৃতপক্ষে, আমি এটি পরীক্ষা করেছি)।


6

র‌্যাকেট 166 বাইট

(let((c 0)(g(λ(x)(* x x x))))(for*((i(in-naturals))(j(range 1 i))(k(range j i))#:final(= c n))
(when(=(+(g j)(g k))(+ 1(g i)))(displayln(+ 1(g i)))(set! c(+ 1 c)))))

Ungolfed:

(define (f n)
  (let ((c 0)
        (g (λ (x) (* x x x))))
    (for* ((i (in-naturals))
           (j (range 1 i))
           (k (range j i))
           #:final (= c n))
      (when (= (+ (g j) (g k))
               (+ 1 (g i)))
        (displayln (+ 1(g i)))
        (set! c (add1 c))))))

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

(f 5)

আউটপুট:

1729
1092728
3375001
15438250
121287376


5

পরী / জিপি, 107 বাইট

F(n)=c=2;while(n>0,c++;C=c^3+1;a=2;b=c-1;while(a<b,K=a^3+b^3;if(K==C,print(C);n--;break);if(K>C, b--,a++)))

10 সেকেন্ডে প্রথম 10 সমাধানগুলি সন্ধান করে।

লক্ষ্য: একটি ^ 3 + বি ^ 3 = সি ^ 3 + 1

  1. দ্বারা ফাংশন-যুক্তি প্রয়োজনীয় সমাধান সংখ্যার পায় এন

  2. বৃদ্ধি থেকে 3 এবং প্রতিটি জন্য গ ^ 3 + 1 টি অনুসন্ধানসমূহ একটি এবং সঙ্গে 1 <একটি <= খ <গ যেমন যে একটি ^ 3 + খ ^ 3 = C ^ 3 + 1 টি । এটি পাওয়া গেলে, আরও soulutions প্রয়োজনীয় সংখ্যক হ্রাস এন দ্বারা 1 এবং পুনরাবৃত্তি

  3. সমাপ্ত হয়, যখন আরও প্রয়োজনীয় সমাধানগুলির সংখ্যা ( এন তে ) 0 সমান হয়

প্রথম দশটি সমাধান পেতে কল করুন :

F(10)

পঠনযোগ্য কোড (ফাংশনটির ব্লক-নোটেশনের জন্য সূচক হিসাবে নেতৃস্থানীয় এবং চলমান ধনুর্বন্ধনী প্রয়োজন convenience এছাড়াও সুবিধার জন্য সমাধানের সমস্ত ভেরিয়েবল মুদ্রণ করে):

{F(m) = c=2;
   while(m>0,        
     c++;C=c^3+1;             
     a=2;b=c-1;                
     while(a<b,                
           K=a^3+b^3;               
            if(K==C,print([a,b,c,C]);m--;break);
            if(K>C, b--,a++);
          );
    );}

পরী / জিপি, 93 বাইট

(ডেনিসের উন্নতি)

F(n)=c=2;while(n,C=c^3+1;a=2;b=c++;while(a<b,if(K=a^3+b^3-C,b-=K>0;a+=K<0,print(C);n--;b=a)))              

পিপিসিজিতে আপনাকে স্বাগতম! আমি আপনাকে স্বাভাবিক ফর্ম্যাটটির উত্তর দেওয়ার স্বাধীনতা নিয়েছি (কিছু ইউজার স্ক্রিপ্ট এবং স্ট্যাক স্নিপেটগুলি তার উপর নির্ভর করে)। এটি কয়েক বাইট সংরক্ষণ করে বলে মনে হচ্ছে।
ডেনিস

হাহ, ডেনিস, বিন্যাসের জন্য আপনাকে ধন্যবাদ আর হ্রাস আসলেই দুর্দান্ত! আমি সুনির্দিষ্ট টুইটগুলি কখনই দেখিনি ... আমি এটি সংস্করণ হিসাবে উত্তরে নিয়ে যাব।
গটফ্রিড হেলস

5

পাইথন 2, 122 119 বাইট

তবুও কেন উপোস করছো? ডেনিস এই উত্তরটিকে চূর্ণ করেছে;)

এই প্রশ্নের দীর্ঘতম সমাধানে স্বাগতম: / আমি দীর্ঘ শর্ত তৈরি করে এবং যতটা সম্ভব ইনডেন্টেশন সরিয়ে পুরো বাইটটি শেভ করতে সক্ষম হয়েছি।

x,y,z=2,3,4
n=input()
while n:
 if y**3+x**3-z**3==1and x<y<z:print z**3+1;n-=1
 x+=1
 if y<x:y+=1;x=2
 if z<y:z+=1;y=3

এর জন্য আউটপুট n = 5:

1729
1092728
3375001
15438250
121287376

4

টিআই-বেসিক, 90 বাইট

আরও একটি ছোট উপায় থাকতে হবে ...

Prompt N
2->X
3->Y
4->Z
While N
If 1=X³+Y³-Z³ and X<Y and Y<Z
Then
DS<(N,0
X+1->X
If Y<X
Then
2->X
Y+1->Y
End
If Z<Y
Then
3->Y
Z+1->Z
End
End

2

ম্যাটল্যাব, ৯৪ বাইট

আরেকটি নিষ্ঠুর শক্তি সমাধান:

for z=4:inf,for y=3:z,for x=2:y,c=z^3+1;if x^3+y^3==c,n=n-1;c,if~n,return,end,end,end,end,end

এর জন্য আউটপুট n=4:

>> n=4; fermat_near_misses    
c =
        1729
c =
     1092728
c =
     3375001
c =
    15438250

c=ডিসপ্লেটির অংশটি দমন করা কোডটি 100 বাইটে বাড়িয়ে তোলে

for z=4:inf,for y=3:z,for x=2:y,c=z^3+1;if x^3+y^3==c,n=n-1;disp(c),if~n,return,end,end,end,end,end

>> n=4; fermat_near_misses_cleandisp    
        1729
     1092728
     3375001
    15438250

সেখানে 5 "শেষ" গুলি কেন? দুঃখিত আমি
মাতলাব

@ ev3 কম্যান্ডার এটি ম্যাটল্যাবের বিবৃতি সমাপনী প্রতীক, যদি আপনি চান "ক্লোজিং বন্ধন"
রডি ওলডেনহুইস

2

সি #, 188 174 187 136 বাইট

গল্ফযুক্ত সংস্করণ তার দুর্দান্ত কোড গল্ফিং এবং টিপস ( অনলাইন চেষ্টা করুন! ) এর জন্য TheLethalCoder কে ধন্যবাদ জানায় :

n=>{for(long a,b,c=3;n>0;c++)for(a=2;a<c;a++)for(b=a;b<c;b++)if(a*a*a+b‌​*b*b==c*c*c+1)System‌​.Console.WriteLin‌e(‌​c*c*(a=c)+n/n--);};

প্রথম 10 নম্বরগুলি সন্ধানের জন্য নির্বাহের সময়: আমার আই 7 ল্যাপটপে 33,370842 সেকেন্ড (একই কাজের জন্য নীচের মূল সংস্করণটি 9,618127 সেকেন্ড ছিল)।

অবরুদ্ধ সংস্করণ:

using System;

public class Program
{
    public static void Main()
    {
        Action<int> action = n =>
        {
            for (long a, b, d, c = 3; n > 0; c++)
                for (a = 2; a < c; a++)
                    for (b = a; b < c; b++)
                        if (a * a * a + b‌ * b * b == c * c * c + 1)
                            System‌.Console.WriteLin‌e( c * c * (a = c) + n / n--);
        };

        //Called like
        action(5);
    }
}

পূর্ববর্তী সহ 187 বাইট সংস্করণ গল্ফ হয়েছে using System;

using System;static void Main(){for(long a,b,c=3,n=int.Parse(Console.ReadLine());n>0;c++)for(a=2;a<c;a++)for(b=a;b<c;b++)if(a*a*a+b*b*b==c*c*c+1)Console.WriteLin‌​e(c*c*(a=c)+n/n--);}

পূর্ববর্তী গল্ফযুক্ত 174 বাইট সংস্করণ (পিটার টেলরকে ধন্যবাদ):

static void Main(){for(long a,b,c=3,n=int.Parse(Console.ReadLine());n>0;c++)for(a=2;a<c;a++)for(b=a;b<c;b++)if(a*a*a+b*b*b==c*c*c+1)Console.WriteLin‌​e(c*c*(a=c)+n/n--);}

পূর্ববর্তী (মূল) 188 বাইট সংস্করণ গল্ফ করেছে ( অনলাইনে চেষ্টা করুন! ):

static void Main(){double a,b,c,d;int t=0,n=Convert.ToInt32(Console.ReadLine());for(c=3;t<n;c++)for(a=2;a<c;a++)for(b=a;b<c;b++){d=(c*c*c)+1;if(a*a*a+b*b*b==d){Console.WriteLine(d);t++;}}}

প্রথম 10 নম্বরগুলি সন্ধানের জন্য নির্বাহের সময়: আমার আই 7 ল্যাপটপে 9,618127 সেকেন্ড।

এটি সি # কোডিংয়ের ক্ষেত্রে আমার প্রথম প্রচেষ্টা ... অন্যান্য ভাষার তুলনায় কিছুটা ভার্বোস ...


3
1. আপনি forলুপের প্রথম ধারাটিতে ভেরিয়েবল ঘোষণা করতে পারেন । 2. এর int.Parseচেয়ে কম Convert.ToInt32। ৩. এই কাজের জন্য longস্বল্প doubleএবং আরও নির্ভুল। 4. tঅপ্রয়োজনীয় হল: আপনি নির্ভর করতে পারেন nনিচে 0পরিবর্তে। ৫. প্রযুক্তিগতভাবে আমি মনে করি ছাপার পরে আপনার দুটি লুপ ভাঙতে হবে, যদি ট্রিপল কাকতালীয় ঘটনা ঘটে।
পিটার টেলর

2
স্বাক্ষরিত:static void Main(){for(long a,b,c=3,n=int.Parse(Console.ReadLine());n>0;c++)for(a=2;a<c;a++)for(b=a;b<c;b++)if(a*a*a+b*b*b==c*c*c+1)Console.WriteLine(c*c*(a=c)+n/n--);}
পিটার টেলর

আপনি এমন Action()=>{/*code here*/};
একটিও

আপনাকে নামগুলি পুরোপুরি যোগ্যতা অর্জন করতে হবে বা using System;বাইট গণনাতে যোগ করতে হবে
TheLethalCoder

@ পিটারটেলর দুর্দান্ত টিপস জন্য ধন্যবাদ! আমি সি # তে সম্পূর্ণ নতুন
মারিও

0

গেমমেকার ল্যাঙ্গুয়েজ, 119 বাইট

কেন show_message()এত দীর্ঘ :(

x=2y=3z=4w=argument0 while n>0{if x*x*x+y*y*y-z*z*z=1&x<y&y<z{show_message(z*z*z+1)n--}x++if y<x{x=2y++}if z<y{y=3z++}}

x, y, z = 2,3,4 n = ইনপুট () যখন n: যদি y 3 + x 3-z3 == 1 এবং x3 + 1; n- = 1 x + = 1 যদি y হয়


0

অ্যাক্সিয়াম, 246 বাইট

h(x:PI):List INT==(r:List INT:=[];i:=0;a:=1;repeat(a:=a+1;b:=1;t:=a^3;repeat(b:=b+1;b>=a=>break;q:=t+b^3;l:=gcd(q-1,223092870);l~=1 and(q-1)rem(l^3)~=0=>0;c:=round((q-1)^(1./3))::INT;if c^3=q-1 then(r:=cons(q,r);i:=i+1;i>=x=>return reverse(r)))))

ungof এবং ফলাফল

-- hh returns x in 1.. numbers in a INT list [y_1,...y_x] such that 
-- for every y_k exist a,b,c in N with y_k=a^3+b^3=c^3+1 
hh(x:PI):List INT==
   r:List INT:=[]
   i:=0;a:=1
   repeat
      a:=a+1
      b:=1
      t:=a^3
      repeat
          b:=b+1
          b>=a=>break
          q:=t+b^3
          l:=gcd(q-1,223092870);l~=1 and (q-1)rem(l^3)~=0 =>0 -- if l|(q-1)=> l^3|(q-1)
          c:=round((q-1.)^(1./3.))::INT
          if c^3=q-1 then(r:=cons(q,r);i:=i+1;output[i,a,b,c];i>=x=>return reverse(r))

(3) -> h 12
   (3)
   [1729, 1092728, 3375001, 15438250, 121287376, 401947273, 3680797185,
    6352182209, 7856862273, 12422690497, 73244501505, 145697644729]
                                                       Type: List Integer             
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.