• 数学趣题——验证四方定理


    1、题目

    所有自然数最多只要4个数的平方和就可以表示

    2、源码

       1: #include <stdio.h>
       2: #include <math.h>
       3:  
       4: int mode_1(int N)            /*判断自然数N是否可以表示成为N=a2的形式*/
       5: {
       6:     if((int)sqrt(N)*(int)sqrt(N)==N)
       7:     {
       8:       printf("%d*%d=%d\n",(int)sqrt(N),(int)sqrt(N),N);
       9:       return 1;
      10:     }
      11:     else return 0;
      12: }
      13:  
      14: int mode_2(int N)            /*判断自然数N是否可以表示成N=a2+b2的形式*/
      15: {
      16:     int x,y;
      17:     for(x=1;x<sqrt(N);x++)
      18:         for(y=x;y<sqrt(N);y++)
      19:         {
      20:             if(x*x+y*y == N)
      21:             {
      22:                 printf("%d^2+%d^2=%d\n",x,y,N);
      23:                 return 1;
      24:             }
      25:  
      26:         }
      27:     return 0;
      28: }
      29:  
      30: int mode_3(int N)            /*判断自然数N是否可以表示成N=a2+b2+c2的形式*/
      31: {
      32:     int x,y,z;
      33:     for(x=1;x<sqrt(N);x++)
      34:         for(y=x;y<sqrt(N);y++)
      35:             for(z=y;z<sqrt(N);z++)
      36:             {
      37:                 if(x*x+y*y+z*z == N)
      38:                  {
      39:                     printf("%d^2+%d^2+%d^2=%d\n",x,y,z,N);
      40:                      return 1;
      41:                  }
      42:             }
      43:     return 0;
      44: }
      45:  
      46: int mode_4(int N)            /*判断自然数N是否可以表示成N=a2+b2+c2+d2的形式*/
      47: {
      48:     int x,y,z,t;
      49:     for(x=1;x<sqrt(N);x++)
      50:         for(y=x;y<sqrt(N);y++)
      51:             for(z=y;z<sqrt(N);z++)
      52:                 for(t=z;t<sqrt(N);t++)
      53:                 {
      54:                      if(x*x+y*y+z*z+t*t == N)
      55:                      {
      56:                         printf("%d^2+%d^2+%d^2+%d^2=%d\n",x,y,z,t,N);
      57:                         return 1;
      58:                         }
      59:                 }
      60:     return 0;
      61: }
      62:  
      63: void proveFourSquares(int N)
      64: {
      65:     if(mode_1(N))
      66:     printf("It has verified Four Squares");
      67:     else if(mode_2(N))
      68:     printf("It has verified Four Squares");
      69:     else if(mode_3(N))
      70:     printf("It has verified Four Squares");
      71:     else if(mode_4(N))
      72:     printf("It has verified Four Squares");
      73: }
      74:  
      75: int main()
      76: {
      77:     int N;
      78:     printf("Please input a natural number\n");
      79:     scanf("%d",&N);
      80:     printf("-------- Step of Verification---------\n");
      81:     proveFourSquares(N);
      82:     return 0;
      83: }
  • 相关阅读:
    Lotto--poj2245
    Avoid The Lakes--poj3620
    Fire Net--hdu1045
    变形课--hdu1181
    Apache Mina入门实例
    谈谈项目
    设计模式之装饰者模式
    linux下的权限控制
    centos 6.5 搭建JSP运行环境
    centos 6.5 搭建ftp服务器
  • 原文地址:https://www.cnblogs.com/steven_oyj/p/1744943.html
Copyright © 2020-2023  润新知