PAT 乙级 1007
2017-01-04 12:25
148 查看
1007. 素数对猜想 (20)
让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数。显然有 d1=1 且对于n>1有 dn 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N (< 105),请计算不超过N的满足猜想的素数对的个数。
输入格式:每个测试输入包含1个测试用例,给出正整数N。
输出格式:每个测试用例的输出占一行,不超过N的满足猜想的素数对的个数。
输入样例:
20
输出样例:
4
这道题目做对还是很简单的,只要注意边界的处理就好了。但比较重要的是要做得快~充分利用质数的性质,减少计算次数。
using System; namespace PAT { class Program { static void Main(string[] args) { //非1位数只用验证1、7、9这三个数字 int limit = int.Parse(Console.ReadLine()); int count = 0; int useLimit = limit - 2; int rest; for (int i = 9; i <= useLimit; i = i + 2) { rest = i % 10; if (rest == 1 || rest == 7 || rest == 9) { if (IsPrime(i)) if (IsPrime(i + 2)) count++; } } if (limit >= 7) count = count + 2; //大于7需要给数加2 else if (limit >= 5) //大于5小于7的数,则给答案加1即可 count++; Console.WriteLine(count); } //判断一个大于1的整数是否是质数 static bool IsPrime(int number) { int sqrt = (int)Math.Sqrt(number); for(int i = 2; i<= sqrt; i++) { if(number % i == 0) { return false; } } return true; } } }
相关文章推荐
- PAT(乙级)1007 A除以B (20)
- PAT乙级题解( 1007. 素数对猜想 )
- PAT 乙级 1007
- PAT(乙级)1007. 素数对猜想
- 1007. 素数对猜想 (20)-PAT乙级真题
- 浙江大学PAT_乙级_1007. 素数对猜想 (20)
- [PAT乙级]1007. 素数对猜想 (20)
- PAT乙级1007 素数对猜想
- PAT-乙级-1007. 素数对猜想 (20)
- PAT乙级1007. 素数对猜想 (20)
- pat乙级1007
- PAT乙级1007. 素数对猜想 (20)
- PAT乙级1007(C语言)-素数对猜想 (20)
- PAT乙级——1007 A除以B (C/C++)
- PAT 乙级1007. 素数对猜想 (JAVA版)
- pat乙级1007
- PAT乙级1007
- PAT 乙级 1007. 素数对猜想 (20)
- PAT乙级1007. 素数对猜想 (20)
- PAT 乙级 1007. 素数对猜想 (20) Java版