题目描述
第一次编写
#include<stdio.h>
#include<math.h>
int isPrime(int n)
{
int i = 0;
if(n == 0 || n == 1)
return 0;
for(i = 2;i<=(int)sqrt(n);i++)
{
if(n%i==0)
return 0;
}
return n;
}
int ans[1000000];
int tmp[1000000];
int maxLen = 0;
int len = 0;
int main()
{
int i,j,k;
int n;
scanf("%d",&n);
for(i = 4;i<n;i++)
{
len = 0;
while(!isPrime(i))
{
tmp[len++] = i;
i++;
}
if(len>maxLen)
{
maxLen = len;
for(j=0;j<maxLen;j++)
{
ans[j] = tmp[j];
}
}
}
for(k = 0;k<maxLen;k++)
{
if(k == maxLen-1)
printf("%d\n",ans[k]);
else
{
printf("%d ",ans[k]);
}
}
return 0;
}
第二次编写
#include<stdio.h>
#include<vector>
#include<math.h>
using namespace std;
int isPrime(int n)
{
if(n == 0 || n == 1) return 0;
for(int i = 2;i<=(int)sqrt(n);i++)
{
if(n % i == 0)
return 0;
}
return 1;
}
int main()
{
vector<int> temp,ans;
int a,b;
scanf("%d",&a);
for(int i = 1;i<=a;i++)
{
int first;
while(isPrime(i))
i++;
first = i;
temp.clear();
temp.push_back(i);
while( !isPrime(i) && !isPrime(i+1) )
{
temp.push_back(i+1);
i++;
}
if(temp.size() > ans.size())
ans = temp;
}
for(int j = 0;j<ans.size();j++)
{
if(j == ans.size()-1)
printf("%d\n",ans[j]);
printf("%d ",ans[j]);
}
return 0;
}