您的位置:首页 > 编程语言

(百例编程)34.要发就发

2012-05-27 19:34 260 查看
题目:“1898--要发就发”。请将不超过1993的所有素数从小到大排成第一行,第二行上的每个素数都等于它右肩上的素数之差。编程求出:第二行数中是否存在这样的若干个连续的整数,它们的和恰好是1898?假好存在的话,又有几种这样的情况?

/*“1898--要发就发”。请将不超过1993的所有素数从小到大排成第一行,第二行上的每个素数都等于它
右肩上的素数之差。编程求出:第二行数中是否存在这样的若干个连续的整数,它们的和恰好是1898?假
好存在的话,又有几种这样的情况?
*/
#include<iostream>
#include <vector>
using namespace std;

int zhi(int a);
int main(void)
{
vector<int> a;
vector<int> b;
int t=0,s=0;
for (int i=0;i!=1994;++i)
{
if (zhi(i))
{
a.push_back(i);
}
}

for (vector<int>:: iterator itr=(a.begin()+1);itr!=a.end();++itr)
{
b.push_back(*itr-*(itr-1));
}

for (vector<int>::iterator itee=a.begin();itee!=a.end();++itee)
for (vector<int>::iterator ite=itee;ite!=a.end();++ite)
{
s=*ite-*itee;
++t;
if (s==1898)
{
for (int k=t-1;k>=0;--k)
{
cout<<*(ite-k)<<" ";
}
cout<<endl;
t=0;
s=0;
break;
}
if (s>1898)
{
s=0;
t=0;
break;
}
}
return 0;
}

int zhi(int a)
{
for (int j=2;j<=a/2;++j)
{
if (a%j==0)
{
return 0;
}
if (j==a/2)
{
return 1;
}
}
//return 0;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: