NYOJ 26
#include<stdio.h>
#define N 1000010
int ans[N]={0};
void prime()
{
int i,j;
for( i=2; i<N; i++)
if( ans[i] == 0 )
{
for(j=2*i; j<N; j+=i)
ans[j] = 1;
}
}
int main()
{
int m,i,p,n;
prime();
scanf("%d",&n);
while(n--)
{
scanf("%d",&m);
p=1;
if(m<=2) p=0;
else if(m==3) p=1;
else {
for(i=5;i<=m;i++)
if(!ans[i]&&!ans[i-2]) p++;
}
printf("%d\n",p);
}
return 0;
}
NYOJ 64
#include<stdio.h>
int main(){
int n,m,t;
scanf("%d",&t);
while(t--){
scanf("%d %d",&n,&m);
if(m/2<n||m%2==1||2*n<m/2)printf("No answer\n");
else printf("%d %d\n",2*n-m/2,m/2-n);
}
return 0;
}
NYOJ 76
#include <stdio.h>
int main()
{
int n,a,sum[45];
scanf("%d",&n);
sum[1]=1;
sum[2]=1;
for(int i=3;i<=40;i++)
sum[i]=sum[i-1]+sum[i-2];//
sum[1]=0;
while(n--)
{
scanf("%d",&a);
printf("%d\n",sum[a]);
}
return 0;
}
NYOJ 520
#include<stdio.h>
#define N 2000010
int ans[N]={0};
void prime()
{
int i,j;
for( i=2; i<N; i++)
if( ans[i] == 0 )
{
for(j=2*i; j<N; j+=i) //素数的整倍数的最大素因子可能是该素数
ans[j] = 1; //更新素数对应的出现的次序
}
}
int main()
{
int m,i;
prime();
while(scanf("%d",&m)&&m!=0)
{
for(i=2;i<=m;i++)
if(!ans[i]) printf(" %d",i);
printf("\n");
}
return 0;
}