回 帖 发 新 帖 刷新版面

主题:第二界编程比赛试题

输入两个整数(要求100以内的自然数),若这两个整数之间存在自然数对,则将其中所有的自然数对输出,否则输出不存在的提示.所谓的自然数对是指两个自然数的和与差都是平方数.例如:17-8=9,17+8=25,那么17与8就是自然数对!

例如:输入:2  11
     
      输出: 4  5
            6  10


请大家按要求做题,一定要严密,贴上最优的代码!
由于本的能力有限,我想采取大家投票的方式取下届冠军.
请大家投自己最中意的程序编者!!

回复列表 (共72个回复)

11 楼

#include<stdio.h>
  #include<math.h>
  main()
  { int m,n,k,t,a,j,i;
     printf(" Please enter two num(1~100):");
     while(1)
     {
      scanf("%d%d",&m,&n);
      if((m>1&&m<100)&&(n>1&&n<100)) break;
      else printf(" out of rang(1~20)please retyp:");
      }
      if(m>n)
       { t=m;m=n;n=t;}
      for(i=m;i<=n;i++)
       for(j=i+1;j<=n;j++)
    {  k=sqrt(i+j);
       a=sqrt(j-i);
           if(k*k==(i+j)&&a*a==(j-i))
           printf("\n%d  %d\n",i,j);
           else printf(" zhi liang ge shu zhi jian mei you zi ran shu duei!");
          }
    }
我是初学者,可能这个程序写得太复杂了点~~~~希望大家能够帮我改正!!

12 楼

说说我的算法吧
没时间写了
pow求次方的
a-b=pow(n,2);
a-b=pow(m,2);

x<a<y;
x<b<y;

x<(pow(m,2)+pow(n,2))/2<y
x<(pow(m,2)-pow(n,2))/2<y
然后
2x<pow(m,2)<2y;
x-y<pow(n,2)<y-x;
遍历这两个范围中的能开方的数就可以了。

13 楼

#include<stdio.h>
#include<math.h>
main()
{int i,j,k,t;
k=t=0;
scanf("%d%d",&i,&j);
if((i>=0&&i<=100)&&(j>=0&&j<=100))
{k=j-i;t=j+i;
k=abs(k);
if(k==sqrt(k)^2&&t==sqrt(t)^2)
printf("%d %d\n",i,j);}
else
printf("the error!");
}

14 楼

#include<stdio.h>
#include<math.h>
{int i,j,k,t;
k=t=0;
scanf("%d%d",&i,&j);
if((i>=0&&i<=100)&&(j>=0&&j<=100))
{k=j-i;t=k+i;
k=abs(k);
if(k==sqrt(k)^2&&t==sqrt(t)^2)
printf("%d %d\n",i,j);}
else
printf("the error!");
}

15 楼

#include<stdio.h>
#include<math.h>
main()
{int i,j,k,t;
k=t=0;
scanf("%d%d",&i,&j);
if((i>=0&&i<=100)&&(j>=0&&j<=100))
{k=j-i;t=j+i;
k=abs(k);
if(k==sqrt(k)^2&&t==sqrt(t)^2)
printf("%d %d\n",i,j);
}
else
printf("the error!");
}

16 楼

#include<stdio.h>
#include<math.h>
main()
{int i,j,k,t;
k=t=0;
scanf("%d%d",&i,&j);
if((i>=0&&i<=100)&&(j>=0&&j<=100))
{k=j-i;t=j+i;
k=abs(k);
if(k==sqrt(k)^2&&t==sqrt(t)^2)
printf("%d %d\n",i,j);
}
else
printf("the error!");
}

17 楼

#include<stdio.h>
#include<math.h>
main()
{int i,j,k,t;
k=t=0;
scanf("%d%d",&i,&j);
if((i>=0&&i<=100)&&(j>=0&&j<=100))
{k=j-i;t=j+i;
k=abs(k);
if(k==sqrt(k)^2&&t==sqrt(t)^2)
printf("%d %d\n",i,j);
}
else
printf("the error!");
}

18 楼

#include<stdio.h>
#include<math.h>
main()
{int i,j,k,t;
k=t=0;
scanf("%d%d",&i,&j);
if((i>=0&&i<=100)&&(j>=0&&j<=100))
{k=j-i;t=j+i;
k=abs(k);
if(k==sqrt(k)^2&&t==sqrt(t)^2)
printf("%d %d\n",i,j);
}
else
printf("the error!");
}

19 楼

晕,什么时候出的题啊,我还不知道呢??
你们都做出来啊!!
我好慢我好慢!!

20 楼

#include<stdio.h>
#include<math.h>
main()
{int i,j,k,t;
k=t=0;
scanf("%d%d",&i,&j);
if((i>=0&&i<=100)&&(j>=0&&j<=100))
{k=j-i;t=j+i;
k=abs(k);
if(k==sqrt(k)^2&&t==sqrt(t)^2)
printf("%d %d\n",i,j);
}
else
printf("the error!");
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册