2000以内的素数,2,3,5,7…
将其中相邻两项做差,得到新数列
1,2,2,4,2…
试问:这些数中,是否存在某一项加到某一项,使其和为1898?
新手初来,望大神们指点
#include<stdio.h>
#include<math.h>
int prime(int n)//求出素数的函数
{
int i;
for(i=2;i<=sqrt(n);i++)
{
if(n%i==0)
return 0;//不是素数返回假
}
return 1;//返回真,“1”
}
int main()
{
printf("There are follwing primes in first row :\n");
int a[2000];
int i=4,m=2,j=0,n=0,w=1;
a[0]=2,a[1]=3;
for(i=4;i<2000;i++)***//调用函数,两千以内的素数***
{
if(prime(i)==1)
{
a[m]=i;
m++;
}
}
***//任意连续项相加(从第j项到第i项,等效于a[i]-a[j])***
for(i=m-1;i>0;i--)//从最后的一项开始逆推
{
for(j=0;j<i-1;j++)//用上述项逐步减去最初项
{
if(a[i]-a[j]==1898)//判断是否为1898
{
printf("(%d).%3d,......,%d\n",w,a[j],a[i]);//输出
w++;
}
}
}
return 0;
}