মিস ফরমেট


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.