using System; using System.Collections.Generic; namespace Prime { class Program { static void Main(string[] args) { while (true) { System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch(); List<int> listPrime; listPrime = new List<int>(); Console.WriteLine("请输入一个正整数!"); String input = Console.ReadLine(); stopwatch.Start(); int no = Convert.ToInt32(input); int count = 0; listPrime.Add(2); for (int i = 2; i <= no; i++) { if (i % 2 == 0 )//除2以外,所有质数都是奇数,故如此 { continue; } else { if (isPrime(i, ref listPrime)) { if (listPrime.Count >= 2) { if (listPrime[listPrime.Count - 1] - listPrime[listPrime.Count - 2] == 2) { Console.WriteLine(listPrime[listPrime.Count - 1]+"----"+ listPrime[listPrime.Count - 2]); count++; }; } } } } stopwatch.Stop(); Console.WriteLine(stopwatch.Elapsed.TotalMilliseconds); Console.WriteLine(stopwatch.Elapsed.TotalSeconds); Console.WriteLine(count); } } static bool isPrime( int No,ref List<int> listPrime)//将找到的素数置于listPrime中 { bool b = false; foreach (var prime in listPrime) { if (No%prime==0) { b= false; break; } if (prime>Math.Sqrt(No)) { b= true; listPrime.Add(No); break; } } return b; } } } 以上为C#版的素数对猜想代码。但在PTA上作答时,不要写黄色背景部分,由于其太傻瓜化,它会判定其错误的。 另判断素数的逻辑,有一些思想是来源于知乎大神指点。链接如下https://zhuanlan.zhihu.com/p/46389152 文中一些思想比较实用。 |
|