示意图
7 6 5 ↓←←
8 1 4 ↓↓↑
9 2 3 ↓→↑
10…… →……
输入 |
只有一个正整数n。
|
输出
|
只有质数总数这一个正整数。
|
输入示例
|
6
|
输出示例
|
5
|
其他说明
|
数据范围:对于100%的数据,n<10000。
|
题解:
先说一下意思,从1往外扩。
步骤:
1
1
2
1
2 3
1 4
2 3
5
1 4
2 3
6 5
1 4
2 3
7 6 5
1 4
2 3
7 6 5
8 1 4
2 3
7 6 5
8 1 4
9 2 3
之后拐点是:
2 3 5 7 10 13 17 21 26
+1 +2 +2 +3 +3 +4 +4 +5
看懂了吗?
代码如下:
#include <iostream>
#include <cmath>
using namespace std;
int a[999999];
int main()
{
int i,j,n,jishu=2,t=2,q=1;
cin>>n;
a[0]=2;
a[1]=3;
bool flag;
for(i=2;i<n;i++)
{
if(q==1)
{
a[i]=a[i-1]+t;
q++;
flag=true;
for(j=2;j<=sqrt(a[i]);j++)
{
if(a[i]%j==0)
{
flag=false;
break;
}
}
if(flag==true)
jishu++;
}
else
{
a[i]=a[i-1]+t;
q=1;
t++;
flag=true;
for(j=2;j<=sqrt(a[i]);j++)
{
if(a[i]%j==0)
{
flag=false;
break;
}
}
if(flag==true)
jishu++;
}
}
cout<<jishu<<endl;
system ("pause");
return 0;
}