ให้ใช้ Beal เป็นเงิน $ 1,000,000


17

การคาดเดา Beal'sมีรางวัลล้านดอลลาร์ถ้าคุณพิสูจน์ / พิสูจน์หักล้างมัน

มันระบุว่าถ้าA ^ x + B ^ y = C ^ zที่ A, B, C, x, y และ z เป็นจำนวนเต็มบวกกับ x, y, z> 2 จากนั้น A, B และ C มีปัจจัยสำคัญร่วมกัน

ความท้าทายคือการเขียนโปรแกรมที่ค้นหาตัวอย่างเคาน์เตอร์เพื่อพิสูจน์สิ่งนี้!

กฎระเบียบ

  • เขียนโปรแกรมที่ค้นหาตัวอย่างการนับของการคาดคะเนของ Beal
  • คุณสามารถทำการค้นหาแบบละเอียดได้ (เช่นการรวมตัวเลขที่เป็นไปได้ทั้งหมดที่เหมาะสมกับแบบฟอร์มนี้) หรือใช้การปรับให้เหมาะสมบางอย่าง (เช่น A และ B เป็นสมมาตร)
  • คุณต้องใช้จำนวนเต็มความแม่นยำโดยพลการ

หมายเหตุ

  • นี่คือการประกวดความนิยมมีความคิดสร้างสรรค์!
  • ความเร็วไม่จำเป็น แต่ทำให้น่าสนใจมากขึ้น เพิ่มประสิทธิภาพ!
  • ฉันยังสนใจที่จะเห็นรหัสสั้นที่สุดด้วย คุณจะได้รับ +1 จากฉัน!
  • ฉันจะเรียกใช้โปรแกรมที่ชนะบนซูเปอร์คอมพิวเตอร์ที่ฉันสามารถเข้าถึงได้!
  • การคาดเดานี้ถือเป็นจริง แต่นั่นไม่ได้หมายความว่าเราจะลองไม่ได้!
  • Peter Norvig ของ Google ได้พยายามแก้ไขปัญหานี้เช่นกัน คุณสามารถใช้หน้าของเขาเป็นแนวทาง เขามีโปรแกรม Python สั้น ๆ ที่คุณสามารถใช้เป็นตัวอย่างได้
  • บางคนอื่น (ที่ยังเกิดขึ้นในการทำงานที่ Google) ได้ดีขึ้นมากในแนวทาง Norvig ของหน้าของเขา (กับ source code) สามารถพบได้ที่นี่
  • คำถาม SO ของฉันที่เกี่ยวข้องกับการนี้จากสองปีที่ผ่านมานอกจากนี้ยังอาจจะเป็นประโยชน์: Fin ทั้งหมด a ^ x ในช่วงที่กำหนด

1
ซูเปอร์คอมพิวเตอร์? ตอนนี้มันเท่ มีโอกาสที่จะแยกเงินสดหรือไม่
Aprıʇǝɥʇuʎs

@Synthetica การคาดคะเนนี้ได้รับการทดสอบกับตัวเลขที่มากมากและใหญ่มากดังนั้นนี่เป็นเรื่องสนุก แต่แน่นอนว่าเราสามารถแบ่งเงินสด :)
Austin Henley

2
"มันควรจะดำเนินต่อไปตลอดกาลหรืออนุญาตให้มีขอบเขต จำกัด (ไม่ว่าจะใหญ่แค่ไหน)" ... ตรงข้ามกับทางเลือกอื่น ๆ ?
undergroundmonorail

@undergroundmonorail ใช้งานได้กับคนจำนวนน้อยเท่านั้น
Austin Henley

2
ตัวเลขขนาดเล็กเป็นขอบเขตบนแน่นอน
undergroundmonorail

คำตอบ:


4

ฉันขี้เกียจอย่างน่าสงสาร (ปุนตั้งใจ) แต่ทำไมไม่ ... ดูเหมือนจะทำตามกฎ

Haskell, 204

import Control.Monad
import Control.Monad.Omega
main=print.filter(\[(a,x),(b,y),(c,z)] 
 ->and$(a^x+b^y==c^z):zipWith(((>1).).gcd)[a,b,c][b,c,a])
 .runOmega$mapM(\_->liftM2(,)(each[1..])$each[3..])"123"

สิ่งนี้จะพิมพ์1ชุดค่าผสมทั้งหมดที่ตอบสนองคุณสมบัติตัวอย่าง ฉันใช้แพ็คเกจควบคุม monad-omegaสำหรับ diagonalising ℕ 6 ... อาจถือว่าเป็นการโกงห้องสมุด แต่เมื่อเห็นว่ามีใครบางคนจะโพสต์คำตอบของ APL ซึ่งสิ่งเหล่านี้สร้างขึ้นในภาษา (หรือไม่?) ฉันไม่ได้ให้อะไรมากเกินไป ...

แน่นอนว่าโปรแกรมนั้นช้าเกินไป (ไร้เดียงสาและรายชื่อที่เชื่อมโยงเป็นโครงสร้างข้อมูล) ซึ่งคาดว่าจะให้ผลตอบโต้ตัวอย่างจริง แต่ Haskell สามารถบรรลุประสิทธิภาพที่เหมาะสมได้จริง


1เนื่องจากมันจะพิมพ์ tuples ในรูปแบบรายการเช่นในหนึ่งบรรทัดคุณต้องปิดการบัฟเฟอร์ของเทอร์มินัลหรือคุณจะไม่เห็นเมื่อมีผลลัพธ์เข้ามาหรือคุณสามารถแทนที่printด้วยmapM_ printเพื่อให้คุณได้รับบรรทัดใหม่หลังจากแต่ละผลลัพธ์ การล้างเทอร์มินัลที่บัฟเฟอร์บรรทัด

หากต้องการทดสอบโปรแกรมให้เปลี่ยนeach[3..]เป็นeach[2..]จากนั้นคุณก็จะได้รับ tuples pythagorean ที่ไม่ใช่ coprime ทั้งหมดเป็นผลลัพธ์


2

C # ไม่มีลูป

ตกลงฉันอ่านลิงก์เหล่านี้สองสามอัน แต่จริงๆแล้วพวกเขาน่าเบื่อนิดหน่อย ฉันไม่สนใจที่จะปรับนรกให้เหมาะสมด้วยตารางแฮชและอะไรก็ตาม ทำไมฉันต้อง คุณมีซูเปอร์คอมพิวเตอร์คนหนึ่ง!

นรกฉันไม่ต้องการที่จะห่วงกับลูป! การแก้ปัญหานี้จะเป็นไปตามกฎไม่มีลูป

โปรดทราบว่ารหัสที่ฉันจะเขียนนั้นไม่ได้เป็นรหัสที่ดีหรือรหัสที่ฉันเขียนในชีวิตจริง (ในกรณีที่มีผู้ว่าจ้างที่คาดหวังที่จะอ่านข้อความนี้) รหัสนี้เน้นความกะทัดรัดและความสามารถในการทำงานในการบรรยายและ deemphasises การประชุมและพิธีกรรมที่เหมาะสมและลูปและอื่น ๆ

เพื่อแสดงให้เห็นถึงสิ่งที่ฉันกำลังพูดถึงเราจะเริ่มด้วยคลาสที่น่าตกใจด้วยฟิลด์สาธารณะเพื่อจัดเก็บตัวถูกดำเนินการของสมการ:

class BealOperands
{
    public BigInteger A, B, C, x, y, z;
}

ตกลงเราจะเริ่มด้วยสิ่งที่อาจเป็นความท้าทายที่ยากที่สุด เราจำเป็นต้องหาวิธีในการเปลี่ยนรูปจากการรวมกันของตัวถูกดำเนินการเหล่านั้น มีวิธีการอย่างไม่ต้องสงสัยในการทำอย่างมีประสิทธิภาพมากกว่าการตรวจสอบการเปลี่ยนแปลงทุกครั้ง แต่ฉันไม่สามารถคิดออกได้ แล้วทำไมฉันต้อง เรามีซูเปอร์คอมพิวเตอร์ที่น่ากลัว!

นี่คืออัลกอริทึมที่ฉันคิดขึ้นมา มันไม่มีประสิทธิภาพอย่างไม่น่าเชื่อและไปยังตัวถูกดำเนินการเดียวกันซ้ำแล้วซ้ำอีก แต่ใครจะสนใจ? ซูเปอร์คอมพิวเตอร์!

  • ให้ถือว่าตัวถูกดำเนินการทั้งหกเป็นหมายเลขฐาน 2 และเปลี่ยนผ่านทุกชุดค่าผสม
  • ถือว่าตัวถูกดำเนินการทั้งหกเป็นหมายเลขฐาน 3 และเปลี่ยนรูปทุก ๆ ชุด
  • ปฏิบัติกับตัวถูกดำเนินการทั้งหกเป็นเลขฐาน -4 และเปลี่ยนรูปทุก ๆ ชุด
  • ( ... )

ทำอย่างไรทั้งหมดโดยไม่ต้องวนซ้ำ? ง่าย! เพียงแค่ใช้IEnumerableและเชื่อมโยงIEnumeratorกับการเรียงลำดับพีชคณิต หลังจากนั้นเราจะใช้ LINQ เพื่อสอบถาม

class BealOperandGenerator : IEnumerable<BealOperands>
{
    // Implementation of IEnumerable<> and IEnumerable -- basically boilerplate to get to BealOperandGeneratorEnumerator.
    public IEnumerator<BealOperands> GetEnumerator() { return new BealOperandGeneratorEnumerator(); }
    System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { return GetEnumerator(); }
}

class BealOperandGeneratorEnumerator : IEnumerator<BealOperands>
{
    public BealOperandGeneratorEnumerator() { Reset(); }

    private BealOperands operands;
    private BigInteger @base;

    public void Reset()
    {
        // A is set to 0, which is "before" its minimum value, because IEnumerators are supposed to
        // point to their first element *after* the first call to MoveNext().
        // All other operands are set to their minimum values.
        operands = new BealOperands { A = 0, B = 1, C = 1, x = 3, y = 3, z = 3 };
        @base = 2;
    }

    public BealOperands Current
    {
        get 
        {
            // We need to return a copy, since we'll be manipulating our internal one.
            return new BealOperands { 
                A = operands.A, B = operands.B, C = operands.C, 
                x = operands.x, y = operands.y, z = operands.z };
        }
    }

    public bool MoveNext()
    {
        // Increment the lowest "digit" and "carry" as necessary.
        operands.A++;
        if (operands.A - 1 >= @base)
        {
            operands.A = 1; operands.B++;
            if (operands.B - 1 >= @base)
            {
                operands.B = 1; operands.C++;
                if (operands.C - 1 >= @base)
                {
                    operands.C = 1; operands.x++;
                    if (operands.x - 3 >= @base)
                    {
                        operands.x = 3; operands.y++;
                        if (operands.y - 3 >= @base)
                        {
                            operands.y = 3; operands.z++;
                            if (operands.z - 3 >= @base)
                            {
                                operands.z = 3; @base++;
                            }
                        }
                    }
                }
            }
        }
        // There will always be more elements in this sequence.
        return true;
    }

    // More boilerplate
    object System.Collections.IEnumerator.Current { get { return Current; } }
    public void Dispose() { }
}

ตอนนี้เราอยู่ในธุรกิจ! สิ่งที่เราต้องทำคือระบุตัวอย่างBealOperandGeneratorและค้นหาตัวอย่างของการคาดคะเนของ Beal

ปัญหาใหญ่ของเราต่อไปก็คือว่ามีไม่ได้ดูเหมือนจะเป็นตัวในทางที่จะยกระดับขึ้นสู่อำนาจของการเป็นBigInteger BigIntegerมีBigInteger.Pow(BigInteger value, int exponent)และBigInteger.ModPow(BigInteger value, BigInteger exponent, BigInteger modulus)แต่วิธีที่จะยกระดับBigIntegerเพื่ออำนาจของผู้อื่นBigInteger, โมดูโลอินฟินิตี้

ช่างเป็นปัญหาที่น่าทึ่งมาก! ดูเหมือนว่ามันถูกสร้างขึ้นเพื่อแก้ไขด้วยIEnumerable/ IEnumeratorค้อนของเรา!

class BigIntegerPowerEnumerable : IEnumerable<Tuple<BigInteger, BigInteger>>
{
    public BigIntegerPowerEnumerable(BigInteger @base, BigInteger exponent) { this.@base = @base; this.exponent = exponent; } 
    BigInteger @base, exponent;

    public IEnumerator<Tuple<BigInteger, BigInteger>> GetEnumerator() { return new BigIntegerPowerEnumerator(@base, exponent); }
    System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { return GetEnumerator(); }
}

class BigIntegerPowerEnumerator : IEnumerator<Tuple<BigInteger, BigInteger>>
{
    public BigIntegerPowerEnumerator(BigInteger @base, BigInteger exponent) 
    {
        originalBase = @base; 
        originalExponent = exponent;
        Reset(); 
    }

    BigInteger originalBase, currentBase, originalExponent, currentExponent;
    bool finished;

    public void Reset()
    {
        // IEnumerable.Reset() is a silly method. You're required to implement it when you implement IEnumerable,
        // but it isn't used by foreach or LINQ or anything. If you want to re-enumerate the enumerable, just get
        // a brand new enumerator.
        // In this case it gets in the way. The only reason I'm storing the original values is so I can implement 
        // this useless method properly. I supposed I could just throw a NotImplementedException or something, 
        // but it's done now.
        currentBase = originalBase;
        currentExponent = originalExponent;
        finished = false;
    }

    public bool MoveNext()
    {
        if (finished) return false;

        if (currentExponent <= Int32.MaxValue)
        {
            currentBase = BigInteger.Pow(currentBase, (Int32)currentExponent);
            currentExponent = 1;
            finished = true;
        }
        else
        {
            currentBase = BigInteger.Pow(currentBase, Int32.MaxValue);
            currentExponent -= Int32.MaxValue;
        }
        return true;
    }

    public Tuple<BigInteger, BigInteger> Current
    {
        get { return new Tuple<BigInteger, BigInteger>(currentBase, currentExponent); }
    }

    object System.Collections.IEnumerator.Current { get { return Current; } }
    public void Dispose() { }
}

static class BigIntegerPowExtension
{
    public static BigInteger Pow(this BigInteger @base, BigInteger exponent)
    {
        return new BigIntegerPowerEnumerable(@base, exponent).Last().Item1;
    }
}

ตอนนี้เรามีวิธีการขยายPowที่สามารถเรียกใช้บนBigIntegerและใช้BigIntegerเลขชี้กำลังและไม่มีโมดูลัส

ตกลงเราจะย้อนกลับไป เราจะบอกได้อย่างไรว่ามีตัวอย่างใดBealOperandsเป็นตัวอย่างของการคาดคะเนของ Beal หรือไม่? ดีสองสิ่งต้องเป็นจริง:

  • ตัวถูกดำเนินการเมื่อเสียบเข้ากับสูตรนั้นขึ้นที่ด้านบนของหน้าจะต้องสร้างสมการที่แท้จริง
  • A, B และ C ต้องไม่มีปัจจัยหลักร่วมกัน (เช่น GCD ของพวกเขาคือ 1)

เรามีสิ่งที่เราต้องตรวจสอบเงื่อนไขก่อน และปรากฎว่าเงื่อนไขที่สองนั้นง่ายกว่ามากในการตรวจสอบ BigIntegerมีGreatestCommonDivisorวิธีการที่น่ารักซึ่งช่วยให้เราก้าวเท้าเลี่ยงฝันร้ายทั้งหมดของการพยายามที่จะใช้มันโดยไม่ต้องวนซ้ำ

ดังนั้นเราพร้อมที่จะเขียนวิธีการตรวจสอบว่า a BealOperandsเป็นตัวอย่างหรือไม่ ไปที่นี่ ...

static class BealOperandsExtensions
{
    public static bool IsBealsConjectureCounterExample(this BealOperands o)
    {
        // If the equation isn't even true, we don't have a counter example unfortunately
        if (o.A.Pow(o.x) + o.B.Pow(o.y) != o.C.Pow(o.z))
        {
            return false;
        }

        // We have a counterexample if A, B and C are coprime
        return BigInteger.GreatestCommonDivisor(o.A, o.B) == 1 &&
               BigInteger.GreatestCommonDivisor(o.A, o.C) == 1 &&
               BigInteger.GreatestCommonDivisor(o.B, o.C) == 1;
    }
}

และในที่สุดเราก็สามารถนำทุกสิ่งมารวมกันด้วยวิธีที่ค่อนข้างเรียบMain:

static class Program
{
    static void Main()
    {
        var bealOperandGenerator = new BealOperandGenerator();
        if (bealOperandGenerator.Any(o => o.IsBealsConjectureCounterExample()))
        {
            Console.WriteLine("IN YOUR FACE, BEAL!");
        }
    }
}

2

ไม่มีตัวอย่างตอบโต้ที่มี C ^ Z <= 1.0E27

ตั้งแต่กุมภาพันธ์ 2019 ฉันเช็คเอาท์ที่ C ^ Z <= 1.0E29 จากข้อสันนิษฐานที่ว่า“ X” และ / หรือ“ Y” เลขชี้กำลังต้อง>> 5

เวอร์ชันปัจจุบันของโปรแกรมนี้ (“ X” และ / หรือ“ Y”> = 5) ใช้เวลาน้อยกว่า 1 วินาทีใน AMD 2920X เพื่อค้นหาวิธีแก้ไขปัญหาทั้งหมดให้กับ C ^ Z <= 1.0E15 (แต่ gcd ทั้งหมด (A, B, C) คือ> = 2)

รายละเอียดที่http://www.durangobill.com/BealsConjecture.html

ฉันสามารถแก้ไขรหัสปัจจุบัน (ใช้“ C” และ OpenMP) เกินขีด จำกัด เหล่านี้ แต่จะต้องใช้ RAM มากกว่า 128GB เพื่อเรียกใช้ (ซีพียูนับร้อยจะช่วยได้เช่นกันซีพียูนับพันจะดียิ่งขึ้น) (หากคุณมีสิทธิ์เข้าถึงสิ่งนี้โปรดติดต่อฉัน)

ที่อยู่อีเมลของฉันอยู่ในหน้าแรกของฉันที่http://www.durangobill.com


1
หากคุณสามารถสรุปออกมาได้ด้วยรหัสบางอันนี่อาจเป็นคำตอบที่ถูกต้องมิฉะนั้นมันอาจจะเหมาะสมที่สุดสำหรับความคิดเห็นในคำถาม อย่างไรก็ตามวิธีการทำงานของคุณในแบบนี้น่าประทับใจ
Feburous

มหาวิทยาลัยหลายแห่งมีกลุ่มประสิทธิภาพสูง หากคุณเอื้อมมือไปที่พวกเขาอาจจะสามารถให้คุณเข้าถึง ฉันเห็นกลุ่มมากเกินไปที่ไม่ทำงาน!
Austin Henley

1

รูปแบบที่ 2 ของโปรแกรมค้นหาของ Beal เสร็จสิ้นแล้ว ผลลัพธ์ที่ได้คือ:

Z<1026AX+BY=Z(X,Y)> =4

(X,Y)> =5Z<1028AX+BY=Z(X,Y)> =5

รายละเอียดได้ที่: http://www.durangobill.com/BealsConjecture.html

คำถามสองข้อต่อไปนี้ :: 1) ซูเปอร์คอมพิวเตอร์สามารถขยายการค้นหาได้หรือไม่? 2) ถ้าซูเปอร์คอมพิวเตอร์สามารถขยายการค้นหาได้จริงหรือไม่

1) หากต้องการขยายการค้นหาด้านบนอย่างใดอย่างหนึ่งไปที่ 1.0E30 จำเป็นต้องใช้ RAM 300GB ต่อหนึ่งคอร์เว้นแต่ว่าคอร์สามารถแชร์ 300GB ได้ สำหรับการเพิ่มที่เพิ่มขึ้นในแต่ละครั้งของกำลังงานเอ็กซ์โพเนนเชียลที่มากกว่า 1.0E30 จำนวน RAM ที่ต้องการจะเพิ่มขึ้นอย่างน้อย 2.2

2) จำนวนพลังการประมวลผลที่จำเป็นสำหรับการเพิ่มขึ้นแต่ละครั้งในแบบเลขชี้กำลังจนถึงและสูงกว่า 1.0E30 คูณเวลา CPU ที่รวมกันโดยประมาณ 3.8 การค้นหา 1.0E29 ใช้เวลา 2 สัปดาห์โดยใช้ 12 คอร์ เวลาของซูเปอร์คอมพิวเตอร์นั้นไม่ใช่ "ฟรี" และมีโอกาสน้อยมากที่จะมีตัวอย่างใด ๆ

เพื่อเป็นแนวทางสำหรับประสิทธิภาพของรหัสที่ durangobill.com/BealE29code.txt แต่ละแกนทั้ง 12 แกนมีค่าเฉลี่ย 220 ล้านการวนซ้ำวนซ้ำต่อวินาทีสำหรับวงใน (โดยเฉลี่ยสำหรับการทำงาน 2 สัปดาห์) (การเพิ่มขึ้นของหน่วยความจำ RAM เกินกว่าที่ฉันจะเพิ่มความเร็วเฉลี่ยนี้ขึ้นเป็น 2 เท่า)

ฉันจะให้ Austin ตอบ 1) และ 2) เนื่องจากเขาเข้าถึงซูเปอร์คอมพิวเตอร์และฉันไม่ (หากมีโอกาสจากระยะไกลที่ทั้ง 1) และ 2) เป็น "go" ฉันสามารถส่งรหัส "C" กับข้อแม้ที่ฉันไม่คุ้นเคยกับคำแนะนำแบบมัลติเธรดสำหรับกลุ่มซูเปอร์คอมพิวเตอร์ขนาดใหญ่)


คุณช่วยกรุณาใช้เพียงหนึ่งคำตอบสำหรับคำถามแทนที่จะกระจายออกเป็นสามข้อ? คุณรู้หรือไม่ว่าคุณสามารถแก้ไขคำตอบก่อนหน้าได้ใช่ไหม
Jo King

ฉันขอขอบคุณที่คุณพบตัวอย่างที่ดีและไม่พิมพ์มัน ... นอกจากนี้ยังไม่ค่อยมีโค้ดกอล์ฟ ...
Axman6 6

0

ต้องใส่ใน 2 ความคิดเห็นเพื่อให้มันพอดี

อาร์เรย์ที่สำคัญได้รับการจัดสรรดังนี้:

SortHeads = calloc(PRIME1+1, 8);
X2YmodPrime1 = calloc(ARRAYSIZE+1, 4);
X2YmodPrime2 = calloc(ARRAYSIZE+1, 4);
Base = calloc(ARRAYSIZE+1, 4);
Power = malloc(ARRAYSIZE+1);

(คุณจะต้องใช้ RAM 128GB สำหรับอาเรย์เหล่านี้)

ด้วย:

#define PRIME1 2147483647LLU
#define PRIME2 2147483629LLU
#define ARRAYSIZE 4700000000LL

“ ฐาน” จริง ๆ แล้วต้องการ 33 บิต (cbrt(1.0E29) ) - บิตเพิ่มเติมถูกยัดไว้ใน“ พลังงาน” (ซึ่งต้องการเพียง 7 บิต)

อาร์เรย์ทำงานคล้ายกับตารางแฮช อย่างไรก็ตามเนื่องจากพวกเขาจะถูกจัดเรียงตาม PRIME1 และใช้เป็นตารางการค้นหาเท่านั้นคุณไม่จำเป็นต้องมีรายการที่เชื่อมโยงเพื่อเข้าถึง ผลลัพธ์จึงเป็นการค้นหาเวลาเชิงเส้นที่รวดเร็วมากเพื่อดูว่าการทดลอง A ^ X + B ^ Y = ใด ๆ C ^ Z

ดังนั้นข้อความในวงในสุดมีเพียงสองลูปลึก

คำสั่ง“ Pragma” ควบคุมจำนวนแกนประมวลผลหลายตัวที่ใช้ (ในกรณีนี้ 12) - ทั้งหมดสามารถเข้าถึงสำเนาของอาร์เรย์ได้เพียงชุดเดียว

นี่คือรหัส“ หลัก” (ใน“ C”) (หวังว่าความคิดเห็นจะพอดีกับความยาวบรรทัดที่โพสต์ถ้าไม่ให้คัดลอกออกและวางรหัสในเอกสารบางอย่างที่มีความยาวบรรทัดที่ยาวกว่า)


กล่องความคิดเห็นจะให้ฉันใช้ 600 ตัวอักษรเท่านั้นและฉันต้องการ 3,000+ สำหรับรหัส (ข้อเสนอแนะใด ๆ ) (ฉันสามารถโพสต์รหัสบนหน้าเว็บของฉันถ้าฉันไม่สามารถโพสต์ได้ที่นี่)
Bill Butler

ฉันใส่รหัส“ main”“ C” ที่นี่ durangobill.com/BealE29code.txt หากไม่มีสิ่งใดเป็นตัวอย่างของ“ วิธีการทำ” สำหรับการประมวลผลหลายเธรดใน“ C”
Bill Butler

1
ยินดีต้อนรับสู่เว็บไซต์ ในขณะที่กล่องความคิดเห็น จำกัด ไว้ที่ 600 ตัวอักษรคำตอบของคุณไม่ได้ คุณควรใส่รหัสลงในคำตอบได้อย่างง่ายดาย หากคุณไม่ลองตัดความคิดเห็นออก นอกจากนี้ฉันจัดรูปแบบคำตอบของคุณเพื่อใช้บล็อกรหัส สิ่งเหล่านี้สามารถทำได้ด้วย 4 ช่องว่างเช่นเดียวกับฉัน เมื่อคุณย้ายรหัสของคุณไปยังคำตอบของคุณคุณควรใส่มันไว้ในบล็อครหัสมิฉะนั้นจะไม่สามารถอ่านได้ทั้งหมด
โพสต์ Rock Garf Hunter
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.