**
航电oj:To Be NUMBER ONE
**
#题目描述
*#不输入 输出16排 数 每一排的倒数相加为1 (3 ~18)
#1/n = 1/(n+1) + 1/(n+1)n
#知识点
数学知识
#代码
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int data[1000];
void decompose()
{
for(int i=2; i<=1000; i++)
{
if(data[i])
{
int temp1 = i+1;
int temp2 = (i+1)*i;
if(!data[temp1]&&!data[temp2])
{
data[temp1] = 1;
data[temp2] = 1;
data[i] = 0;
break;
}
}
}
return ;
}
void pmath()
{
int flag = 1;
for(int i=2;i<=1000;i++)
{
if(data[i])
{
if(flag)
{
printf("%d",i);
flag = 0;
}else
{
printf(" %d",i);
}
}
}
printf("\n");
return ;
}
int main()
{
memset(data,0,sizeof(data));
data[2] = 1;
data[3] = 1;
data[6] = 1;
pmath();
for(int i=4; i<=18; i++)
{
decompose();
pmath();
}
return 0;
}
#总结
知道公式就不难 不知道公式就容易想偏 (⊙﹏⊙)