سؤال

لقد قررت التعامل مع مشروع أويلر المشكلة 233 التالي ولكني أواجه بعض المشاكل الرئيسية!لقد أجريت بعض التحليلات وأحرزت بعض التقدم الجيد ولكنني أصبحت عالقًا الآن.وهنا عملي:

ليما 1:بما أن الدائرة تمر عبر نقاط الزاوية الأربعة، فهناك على الأقل 4 حلول لأي n.لكن لكل نقطة على المحيط يوجد 7 نقاط أخرى مع الانعكاس.لذلك هناك دائمًا 8k+4 نقاط شبكية.

ليما 2:نصف القطر (√2)n ومركزها (n/2, n/2) لذا فإن معادلتها هي (x-n/2)^2 + (y-n/2)^2 = [n/√2]^2.وهذا يقلل إلى x^2+y^2 = n(x+y).

ليما 3:إذا تم كتابة حل x^2+y^2 = n(x+y) (x, y, z) فإن الحل الآخر هو (kx, ky, kz).والدليل على ذلك هو:

(x+y)n = x^2+y^2

(kx)^2+(ky)^2 = (kx+ky)m
k(x^2+y^2) = (x+y)m
m = kn

كان هذا بقدر ما فعلته مع هذا الخط من التفكير - لم أتمكن من رؤية أي مكان أذهب إليه من هناك ولكنه مدرج لأنه قد يكون مفيدًا.

فكرتي التالية كانت تحريك مركز الدائرة.سيكون هناك نفس العدد من الحلول التي تحركه في أي بعد عددا صحيحا.لذا عندما يكون n/2 عددًا صحيحًا، فإن n=2k، x^2+y^2 = 2*k^2.وتبين أيضًا أن هناك عددًا من الحلول لهذه المعادلة تمامًا مثل المعادلة x^2+y^2=k^2 (انظر سلون A046109).

يوفر هذا أيضًا طريقة سهلة لحساب عدد الحلول لأي n عبر A046080.إذا كانت القوى على الأعداد الأولية في n من النموذج 4k+1 هي f[0]...f[m]، فإن عدد الحلول هو 4*product(2f[i]+1 | i في [0.. .م]).

هذا سمح لي بالعمل إلى الوراء:4.product(2f[i]+1 | i في [0...m]) = 420، لذا المنتج (2f[i]+1 | i في [0...m]) = 105 = 3*5 *7.لقد تمكنت من التوصل إلى هذا البرنامج الذي أعتقد أنه يجد مجموع كل n، في الشكل 2k وأقل من 10^11، والذي يحتوي على 420 نقطة شبكية دائرية.الجواب (آمل!) هو 257199853438240692.

إليك برنامج C:

#include "stdlib.h"
#include "stdio.h"
#include "math.h"
#include "string.h"

#define lim 1000000000L

char prime[lim];
long primes[50000000];
long len = 0;

int main(void)
{
    long i, j;
    for(i = 0; i < lim; i++)
    {
        prime[i] = 1;
    }

    for(i = 2; i < lim; i++)
    {
        if(prime[i])
        {
            for(j = 2*i; j < lim; j += i) prime[j] = 0;
            if((i-1)%4 == 0)
            {
                prime[i] = 2;
                //printf("%li\n", i);
                primes[len++] = i;
            }
        }

        if(i < 1000 || (i < 10000 && i%1000 == 0) || i%10000 == 0) printf("%li, %li\n", i, len);
    }

    printf("primes!\n");

    long a, b, c, v, total = 0, k;
    for(a = 0; a < len; a++)
    {
        v = primes[a]*primes[a]*primes[a];
        if(v > 50000000000L) break;

        for(b = 0; b < len; b++)
        {
            if(b == a) continue;

            v = primes[a]*primes[a]*primes[a]*primes[b]*primes[b];
            if(v > 50000000000L) break;

            for(c = 0; c < len; c++)
            {
                if(c == a) continue;
                if(c == b) continue;

                v = primes[a]*primes[a]*primes[a]*primes[b]*primes[b]*primes[c];
                if(v > 50000000000L) break;

                for(k = 1; k*v <= 50000000000L; k++)
                {
                    if(prime[k] == 2) continue;
                    total += k*v;
                }
            }
        }
    }

    for(a = 0; a < len; a++)
    {
        v = primes[a]*primes[a]*primes[a]*primes[a]*primes[a]*primes[a]*primes[a];
        if(v > 50000000000L) break;

        for(b = 0; b < len; b++)
        {
            if(b == a) continue;

            v = primes[a]*primes[a]*primes[a]*primes[a]*primes[a]*primes[a]*primes[a]*primes[b]*primes[b]*primes[b];
            if(v > 50000000000L) break;

            for(k = 1; k*v <= 50000000000L; k++)
            {
                if(prime[k] == 2) continue;
                total += k*v;
            }
        }
    }

    for(a = 0; a < len; a++)
    {
        v = primes[a]*primes[a]*primes[a]*primes[a]*primes[a]*primes[a]*primes[a]*primes[a]*primes[a]*primes[a];
        if(v > 50000000000L) break;

        for(b = 0; b < len; b++)
        {
            if(b == a) continue;

            v = primes[a]*primes[a]*primes[a]*primes[a]*primes[a]*primes[a]*primes[a]*primes[a]*primes[a]*primes[a]*primes[b]*primes[b];
            if(v > 50000000000L) break;

            for(k = 1; k*v <= 50000000000L; k++)
            {
                if(prime[k] == 2) continue;
                total += k*v;
            }
        }
    }

    printf("%li\n", 2*total);


    return 0;
}

نحتاج فقط إلى إضافة قيم n التي تحتوي على 420 نقطة شبكية دائرية وتكون على الشكل 2k+1!ومع ذلك، يبدو هذا أصعب من n=2k ولا أستطيع رؤية أي طريقة لذلك.أنا أيضًا غير متأكد قليلاً مما إذا كانت إجابتي حتى n صحيحة نظرًا لأن الطريقة معقدة تمامًا ...هل يمكن لأحد أن يؤكد ذلك؟هل هناك طريقة أنيقة دون التعامل مع مختلف n بشكل مختلف؟

لقد نفدت الأفكار!


أنا مهتم في الغالب بكيفية تعاملي مع N=2k+1 منذ أن كان N=2k أستطيع أن أفعل كما يقترح John Feminella.

هل كانت مفيدة؟

المحلول

تلميح 1:الدائرة لها نصف قطر n/√2، وهو ليس عددًا صحيحًا أبدًا لعدد صحيح n، لذلك لا ينطبق A046080 أبدًا.

تلميح 2:لا تهتم بتحريك الدائرة حولها.التقطه من ورقة الرسم البياني وفكر فيه فقط، والمربع الذي يحدده، والنقاط المثيرة للاهتمام غير المعروفة حتى الآن على المحيط وعلاقتها ببعضها البعض.

تلميح 3:الزاوية المرسومة في نصف الدائرة تكون دائمًا 90 درجة.

تلميح 4:بكم طريقة يمكن كتابة العدد على صورة مجموع مربعين؟

تلميح إضافي لاستخدامه بحرية في جميع أنحاء: تناظر!


تنبيه المفسد!


لا تقرأ المزيد حتى تحاول حل المشكلة من التلميحات أعلاه

إذا لم تكن هذه التلميحات كافية، فإليك بعض الخطوات المفقودة للتداخل مع التلميحات أعلاه:

تلميح 1.5:سيتعين عليك تغيير طريقتك في النظر إلى المشكلة نظرًا لأن النهج الذي كنت تستخدمه يعتمد على فرضية خاطئة.

تلميح 2.5:فكر في نقطة شبكية على الجانب الأيسر من القوس بين الزوايا العليا للمربع.وبالتماثل، توجد نقطة أخرى مباشرة على يمينها ونقطة ثالثة أسفلها مباشرة.ماذا يمكنك أن تقول عن المسافة بين هذه النقاط وعن المثلث الذي تشكله؟

تلميح 3.5:كيف يمكنك تحديد عدد نقاط الشبكة الموجودة على الجانب الأيسر من القوس بين الزوايا العليا للمربع لأي قيمة n معينة؟

نصائح أخرى

تلميح رقم 1. إن lemma رقم 2 الخاص بك ليس صحيحًا تمامًا.هل أنت متأكد من أن هذا هو نصف القطر؟

تلميح رقم 2. ترتبط الإجابة ارتباطًا وثيقًا بوظيفة مجموع المربعات، r(k, n).وهذا يعطي عدد الطرق لتمثيل n باستخدام مربعات مختلفة k، مما يسمح بالأصفار والتمييز بين الترتيب.على سبيل المثال، r(2, 5) يساوي 8، لأن هناك 8 طرق لتمثيل 5 باستخدام مربعين:

(-2)^2 + (-1)^2
(-2)^2 + 1^2
2^2    + (-1)^2
2^2    + 1^2
... (and the 4 additional expressions produced by reversing these 2 terms)

يمكنك أن ترى أن دائرة نصف قطرها p المتمركزة عند الأصل تحتوي على نقاط شبكية r(2, p^2).على سبيل المثال، دائرة نصف قطرها 5 لديها:

(-4)^2 + (-3)^2
... and 7 others like this

5^2    + 0^2
(-5)^2 + 0^2
0^2    + 5^2
0^2    + (-5)^2

ليصبح المجموع 12.ما هي أنواع الأرقام التي تحتوي على 420 نقطة شبكية دائرية؟الآن ماذا لو لم تكن متمركزة في الأصل؟سأدعك تأخذها من هنا.

إذا كنت تريد تلميحًا أكبر بكثير، فأنا أفسدت 13'd (http://rot13.com) شيء يجب عليك التحقق منه هنا:

uggc://zngujbeyq.jbysenz.pbz/FpuvamryfGurberz.ugzy

ويمكنك الرجوع إلى http://oeis.org/A046109/b046109.txt لفحص ما يصل الى 1000. أنا ركبت PARI / GP وتستخدم أحد البرامج النصية PARI هنا: http://oeis.org/ A046109 لتحقق أرقام أعلى من ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top