مسألة أويلر رقم 2: متتابعة فيبوناتشي « مغامرات برمجية

مسألة أويلر رقم 2: متتابعة فيبوناتشي

نّشر في: 2011/05/31
وسوم: ,
تعليقات: 12 تعليق

Project Euler Problem 2

نص السؤال:

كل عدد جديد في متتالية فيبوناتشي يتم إنتاجه عن طريق جمع العددين السابقين له. إذا بدأنا بـ 1 و 2 ستكون العشرة أعداد الأولي هي:

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …

إذا نظرنا إلى الأعداد في متتالية فيبوناتشي التي لا تتعدى قيمتها أربعة ملايين، ما هو مجموع الأعداد الزوجية؟

 

 

نـــص مخـــفي: التحليل أظــهــر

 

 

نـــص مخـــفي: الحل أظــهــر

Post to Twitter

12 تعليق - أضف تعليق
  1. Ahmad Shukr قال:

    هذه حلي باستخدام الروبي , وجدت حلك قريب جدا مع بعض الاختلافات البسيطة

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    def fib()
        #initialize basic variables
        sum , term1, term2 = 2 , 1 , 2
       
        while true do
                    #new term start from 3
            newterm = term1 + term2
            #move current term2 to term1
                    term1 = term2
            #new term is the term2
            term2 = newterm
     
            if  newterm > 4000000
                break
            end

            if  newterm % 2 == 0
                sum += newterm
            end

        end
        return sum
    end
    puts fib()
    • System Down قال:

      روبي هي أحد تلك اللغات التي وضعت تعلمها هدفاً أمامي. للأسف أمامي الكثير من الأهداف والكسل طبع يغلب علي :(

  2. Ahmad Shukr قال:

    طريقة عمل الـ swap المذكورة في حلك رائعة , هذه معلومة جديدة بلنسبة لي !
    شكرا .

    • System Down قال:

      هذه أحد أسباب تمسكي بفكرة حل مسائل أويلر كطريقة لتعلم خفايا لغة ما. خلال رحلتي القصيرة هذه تعلمت الكثير من الأشياء عن بايثون لم أعرفها عن طريق القراءة.

  3. youssef قال:

    اخي انا فشلت في حل التمرين لانني كنت اضن ان المطلوب هو قيمة الحد u(3999999)
    وسؤالي هو ما هي الكلمة في نص التمرين التي تدل على ان المطلوب هو الاعداد الزوجية

    By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.

    ايضا عندما حاولت بالسي

    احصل على نتيجة خاطئة على حسب الموقع الاصلي
    اضن ان السبب هو الbig numbers
    ما قولك اخي ان كنت تبرمج بالسي ؟


    #include

    main()
    {
    int i=1,j=2,u=0,sum=0;

    do
    {
    u = i+j;
    i=j;
    j=u;
    if(u%2==0)
    sum+=u;
    }while(u>

    • youssef قال:
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      #include <stdio.h>

      main()
      {
                int i=1,j=2,u=0,sum=0;

          do
            {
               u = i+j;
               i=j;
               j=u;
             if(u%2==0)
             sum+=u;
            }while(u<4000000);
         
               printf("%d\n",sum);
               
      system("pause");
      }
      • youssef قال:

        ههه والله اخي بعد 30 تانية من كتابتي للرد اعلاه وجدت المشكلة
        المشكل هو انني لم احتسب الحد التاني الذي هو عدد زوجي ايضا

        • System Down قال:

          عادي جداً. مثل هذه الأمور تحدث كثيراً. لهذا السبب يفقد المبرمجون شعر رأسهم مبكراً :D

    • System Down قال:

      نعم. even تعني زوجي وodd تعني فردي. نتعلم الإنجليزية والبرمجة والرياضايت في نفس الوقت. أليس هذا رائعاً؟ :)

      • youssef قال:

        ونتعرف على اناس لهم نفس اهتماماتنا حقا رائع
        ناس مسعدين يفقدو اللحية ايضا في سبيل العلم هههه مش الشعر فقط
        شكرا !!!

  4. طيب لو سمحتم

    هل اجد عندكم حل هذه المتسلسلة بلغة الفورتران

  5. اريد باستخدام اوراكل10

أضف تعليق

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

*

يمكنك استخدام أكواد HTML والخصائص التالية: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>


مرحباً , تاريخ اليوم هو الثلاثاء, 2017/02/21