تم النشر منذ 29 Nov 2013 (معدل) سلام عليكم كان السؤال الثاني عشر هو العدد الأولي الدائري هو الذي أرقامه تشكل عددا أوليا كيفما أزحناهامثال العدد 197 عدد أولي دائري لأن 971 و 719 عددان أوليانولكي نفهم العدد الأولي الدائري أرسم دائرة ووزع عليها أرقام العدد ثم ابد من أي رقم وانتقل إلى اليمين فسجد رقما أوليا الأرقام الأولية الدائرية الأصغر من 100 هي : 2 3 5 7 11 13 17 31 37 71 73 79 97المطلوب هو معرفة كم عددا أوليا دائريا أصغر من 1000000 وكان الجواب الصحيح هو 55وقد أجاب عنه :مصطفىالعمدةSOLO.NETzaraki_kenpache نرجو من الإخوة وضع إجاباتهم مع بعض من التوضيح لتتم الفائدة تم تعديل 29 Nov 2013 بواسطه أحمد أبو عبد البر 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 29 Nov 2013 استخدمت في هذا السؤال دالة اختبار الاولية التي استخدمتها في حل السؤال السابع مع اضافة دالة لاستبعاد اي عدد يحتوي على رقم زوجي و دالة اخرى للقيام بعملية التدوير للعدد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[i]=m[j+i] else : v=i-count s[i]=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.724suser 0m1.696ssys 0m0.024sو بالتجربة تبين أن دالة استبعاد الاعداد الزوجية وفرت بعض الوقت في التنفيذ 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 30 Nov 2013 (معدل) السلام عليكممن بين الأعداد الطبيعية المحصورة بين 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 تم تعديل 30 Nov 2013 بواسطه SOLO.NET 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 30 Nov 2013 Project Euler 35 :) 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
تم النشر منذ (معدل)
سلام عليكم
كان السؤال الثاني عشر هو
العدد الأولي الدائري هو الذي أرقامه تشكل عددا أوليا كيفما أزحناها
مثال العدد 197 عدد أولي دائري لأن 971 و 719 عددان أوليان
ولكي نفهم العدد الأولي الدائري أرسم دائرة ووزع عليها أرقام العدد ثم ابد من أي رقم وانتقل إلى اليمين فسجد رقما أوليا
الأرقام الأولية الدائرية الأصغر من 100 هي : 2 3 5 7 11 13 17 31 37 71 73 79 97
المطلوب هو معرفة كم عددا أوليا دائريا أصغر من 1000000
وكان الجواب الصحيح هو 55
وقد أجاب عنه :
مصطفى
العمدة
SOLO.NET
zaraki_kenpache
نرجو من الإخوة وضع إجاباتهم مع بعض من التوضيح لتتم الفائدة
شارك هذا الرد
رابط المشاركة
شارك الرد من خلال المواقع ادناه