hdu 1262 寻找素数
2017-09-19 21:17
267 查看
主题思想: 寻找素数。 给一个偶数,要求寻找最近的素数对,使这两个素数的和等于这个偶数。
我的思路是,首先对这个偶数n,求其一半的值m=n/2。
如果m是一个素数,m就是所求。
令a=m,b=m; 如果a,b是偶数,则a=a-1;b=b+1;只有奇数才有可能是素数,如果a,b是奇数,则a=a-2;b=b+2才保证a,b是奇数,
再验证是否是素数。
AC代码:
我的思路是,首先对这个偶数n,求其一半的值m=n/2。
如果m是一个素数,m就是所求。
令a=m,b=m; 如果a,b是偶数,则a=a-1;b=b+1;只有奇数才有可能是素数,如果a,b是奇数,则a=a-2;b=b+2才保证a,b是奇数,
再验证是否是素数。
AC代码:
#include <iostream> #include<cstdio> #include<cstring> #include<cmath> using namespace std; bool isPrime(int n){ if(n==2||n==3||n==5||n==7) return true; if(n%2==0||n%3==0||n%5==0||n%7==0) return false; int len=sqrt(n); for(int i=2;i<=len;i++){ if(n%i==0) return false; } return true; } int main() { int n=10000; int cnt=0; int m; int a,b; // n is even , while(scanf("%d",&n)!=EOF){ int m=n/2; if(isPrime(m)){ printf("%d %d\n",m,m); continue; } a=m; b=m; while(true){ if(isPrime(a)&&isPrime(b)){ printf("%d %d\n",a,b); break; } if(a%2==0)a=a-1; else a=a-2; if(b%2==0) b=b+1; else b=b+2; } } }
相关文章推荐
- HDU 1262 寻找素数对
- HDU1262——寻找素数对
- hdu-1262-寻找素数对
- hdu 1262 寻找素数对(STL)
- HDU 1262 寻找素数对
- hdu 杭电 1262 寻找素数对
- HDU 1262 寻找素数对
- hdu 1262 寻找素数对(数论:生成素数表+水题)
- hdu-1262-寻找素数对
- hdu1262 数论基础 寻找素数对
- HDU 1262 寻找素数对 素数水题
- HDU 1262 寻找素数对 2098分拆素数和
- hdu 1262 寻找素数对
- 数论--HDU1262 寻找素数对【素数】
- hdu1262-寻找素数对
- HDU 1262-寻找素数对
- hdu1262 寻找素数对
- hdu1262寻找素数对
- HDU 1262 寻找素数对 模拟题
- hdu 1262 寻找素数对