الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

نتيجة السؤال الثاني عشر 12

بدأه أحمد أبو عبد البر في 29 نوفمبر 2013 · 3 رد · 4,298 مشاهدة · في المسابقات البرمجية
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

سلام عليكم

 

كان السؤال الثاني عشر هو

 

العدد الأولي الدائري هو الذي أرقامه تشكل عددا أوليا كيفما أزحناها

مثال العدد 197 عدد أولي دائري لأن 971 و 719 عددان أوليان

ولكي نفهم العدد الأولي الدائري أرسم دائرة ووزع عليها أرقام العدد ثم ابد من أي رقم وانتقل إلى اليمين  فسجد رقما أوليا

 

الأرقام الأولية الدائرية  الأصغر من 100 هي : 2 3 5 7 11 13 17 31 37 71 73 79 97

المطلوب هو معرفة كم عددا أوليا دائريا أصغر من 1000000

 

 

وكان الجواب الصحيح هو 55

وقد أجاب عنه :

مصطفى

العمدة

SOLO.NET

zaraki_kenpache

 

نرجو من الإخوة وضع إجاباتهم مع بعض من التوضيح لتتم الفائدة

تم تعديل هذه المشاركة بواسطة أحمد أبو عبد البر في 29 نوفمبر 2013 في 22:59

vVIfFr.gif

مدونتي



إذا رأيتموني غبت فأطلت الغياب فربما أكون قد انتقلت عن الدنيا إلى الآخرة

فما أحوجني إلى دعوة صالحة من أخ لي كريم

 

http://www.tvquran.com/

 

LoGeCom

أول برنامج عربي للمحاسبة والتجارة وإدراة المخازن يعمل على اللينكس والماك والويندوز 

#2

استخدمت في هذا السؤال دالة اختبار الاولية التي استخدمتها في حل السؤال السابع مع اضافة دالة لاستبعاد اي عدد يحتوي على رقم زوجي و دالة اخرى للقيام بعملية التدوير للعدد

import sysx=1000000result=1even=[0,2,4,6,8]def check_prime(x):                        m=x                        a=2                        k=m-1                        q=pow(a,k,m)                        if q == 1:                                  return 1                         else : return 0def have_even(x):                 count=len(str(x))                 for j in range(0,count,1):                           mm=str(x)                           m1=mm[j]                           mm1=int (m1)                           if mm1  in even:                                           return 1def checker(x):               count=len(str(x))                    s=range(count)               ccount=count-1               for j in range(0,count,1):                                          m=str(x)                           st=m[j]                           ff=ccount-j                           s[0]=st                           for i in range(1,count,1):                             if j+i < count:                               s=m[j+i]                             else :                               v=i-count                               s=m[j+v]                           ss="".join(s)                           #print ss                           target=int(ss)                           if  check_prime(target)==0:                                                      return 0                                                   x1=x-1                        for m in range(x1,2,-2):           if have_even(m) != 1:             if check_prime(m) == 1:                                             if checker(m)!=0:                                   # print m                                    result=result+1print result

و قد كان وقت التنفيذ كالاتي

real    0m1.724s
user    0m1.696s
sys    0m0.024s

و بالتجربة تبين أن دالة استبعاد الاعداد الزوجية وفرت بعض الوقت في التنفيذ

#3

السلام عليكم


من بين الأعداد الطبيعية المحصورة بين 1 و 6، الأعداد 2 و 3 و 5 أولية، بينما الأعداد 1 و 4 و 6 أعداد غير أولية.


جميع الأعداد الأولية - عدا 2 و 5 - تنتهي ب 1 أو 3 أو 7 أو 9 لأن جميع الأعداد التي تنتهي ب 0 أو 2 أو 4 أو 6 أو 8 هي من مضاعفات العدد 2 فليست بالتأكيد أولية، والأعداد التي تنتهي ب 5 هي من مضاعفات العدد 5 فليست أولية أيضاً.



odule Module1


    Dim DC As New HashSet(Of Char)

    Sub Main()

        DC.Add("2")

        DC.Add("4")

       DC.Add("6")

        DC.Add("8")

        DC.Add("0")

       DC.Add("5")

        Dim max As Integer = 1000000

        Dim Primes() As Integer = (From X As Integer In Enumerable.Range(2, max - 1) Where IsPrime(X) AndAlso ND(X.ToString) Select X).ToArray

        Dim CircularPrimes = (From x As Integer In Primes Select x Where AllRotationPrime(Primes, x))

        Console.WriteLine("Circular Primes:" + CircularPrimes.Count.ToString)

        For i As Integer = 0 To CircularPrimes.Count - 1

            Console.Write(CircularPrimes(i).ToString + " ")

        Next

        Console.ReadLine()

    End Sub

    Private Function IsPrime(ByRef x As Integer) As Boolean

        If x <= 0 Then Return False

       If x = 2 Then Return True

        If x = 3 Then Return True

        If x = 5 Then Return True

        If x Mod 2 = 0 Then Return False

        If x < 4 Then Return True

        Dim sqr As Integer = Math.Round(Math.Sqrt(x), 0, MidpointRounding.AwayFromZero)

        If sqr Mod 2 = 0 Then sqr += 1

       Dim i As Integer = 1

        While i <= sqr

            i += 2

            If x Mod i = 0 Then Return False


        End While

        Return True

    End Function

    Private Function ND(ByRef N As String) As Boolean

       If N = "2" Then Return True

        If N = "3" Then Return True

        If N = "5" Then Return True

        For Each NC As Char In N

            If DC.Contains(NC) Then Return False

        Next

        Return True

    End Function


   Private Function AllRotationPrime(ByRef p As IEnumerable(Of Integer), ByVal n As String) As Boolean


        For i As Integer = 0 To n.Length - 2

            n = n.Substring(1) & n(0)

            If p.Contains(n) = False Then Return False

        Next

        Return True

    End Function

End Module

تم تعديل هذه المشاركة بواسطة SOLO.NET في 30 نوفمبر 2013 في 05:03

VB.NET and C# Comparison

http://www.harding.edu/fmccown/vbnet_csharp_comparison.html

002.gif

=-=-=-=-=-=-=
ذو العلم يشقى فى النعيم بعلمه .:. واخو الجهالة فى الشقاوة ينعم
=-=-=-=-=-=-=
يا من بدنياه اشتغل . قد غره طول الأمل . فالموت يأتى بغتة . والقبر صندوق العمل
=-=-=-=-=-=-=
ان لم تستطع ان تجد ما تفعله فافعل ما لم تسطع ان تجده

screen_shot_2011-05-19_at_12.44.49_pm.pn

#4

Project Euler 35 :)

1 −1

مواضيع مشابهة