- 给一个整数,求小于整数的质数对之和等于整数的个数。比如 给定num=10,有质数对(3,7),(5,5)两个质数对满足条件。
从最小的整数开始遍历,判断 i 和 num-i 两个数是不是质数。
bool zhishu(int num)
{
if(num==2)
return true;
if(num%2!=0)
{
for(int i=3;i<=sqrt(num*1.0);i=i+2)
if(num%i==0)
return false;
return true;
}
return false;
}
void main()
{
int num;
cin>>num;
int result=0;
if(zhishu(num-2))
{
result++;
cout<<'('<<2<<','<<num-2<<')';
}
for(int i=3;i<=num/2;i++)
if(zhishu(i)&&zhishu(num-i))
{
result++;
cout<<'('<<i<<','<<num-i<<')';
}
cout<<endl;
cout<<"质数对个数="<<result;
}
- Geohash的初衷是如何用尽量短的URL来标志地图上的某个位置,而地图上的位置一般是用经纬度来表示,问题就转化为如何把经纬度转化为一个尽量短的URL。现在用来确定纬度的区间, 算法的主要思想是对某一数字通过二分法进行无限逼近,比如纬度的区间是[-90,90],假如给定一个纬度值:46.5,可以通过下面算法对46.5进行无限逼近:46.5>0,属于[0,90],赋值为1。。。
int main()
{
double i=0;
cin>>i;
int num[2]={-90,90};
int j=0;
int flag[6];
int mid=0;
while(j<=5)
{
mid=(num[0]+num[1])/2;
if(i>=mid)
{
num[0]=mid;
flag[j++]=1;
}
else
{
num[1]=mid;
flag[j++]=0;
}
}
for(int j=0;j<=5;j++)
cout<<flag[j];
}