首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

四方定理验证有关问题

2012-05-05 
四方定理验证问题数论中有著名的四方定理:所有自然数至多只要用四个数的平方和就可以表示。C/C++ code#incl

四方定理验证问题
数论中有著名的四方定理:所有自然数至多只要用四个数的平方和就可以表示。

C/C++ code
#include <stdio.h>#include <math.h>int f(int n, int a[], int idx){    if(a[0]*a[0]+a[1]*a[1]+a[2]*a[2]+a[3]*a[3] == n) return 1;  // 填空1    if(idx==4)  return 0;    for(int i=(int)sqrt(n); i>=1; i--)    {        a[idx] = i;        if(f(n, a, idx+1))  return 1;  // 填空2    }    return 0;}int main(int argc, char* argv[]){    for(;;)    {        int number;        getchar();        printf("输入整数(1~10亿):");        scanf("%d",&number);                int a[] = {0,0,0,0};        int r = f(number, a, 0);        printf("%d: %d %d %d %d\n", r, a[0], a[1], a[2], a[3]);            }    return 0;}


这段代码能实现四方定理的验证吗?为什么本人测试有以下一组数据会出现 四个1 
5,6,11,14,17,24,29,32,41.。。。


[解决办法]
根据代码,函数f返回0表示没有找到解,输出
0: 1 1 1 1

因此,该程序不能对你的测试数据给出解。

热点排行