码迷,mamicode.com
首页 > 其他好文 > 详细

蓝桥杯 大数定理

时间:2015-04-10 17:23:57      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:

标题:四方定理

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

我们可以通过计算机验证其在有限范围的正确性。

对于大数,简单的循环嵌套是不适宜的。下面的代码给出了一种分解方案。

#include<stdio.h>
#include<math.h>
int f(int n,int a[],int idx){
    if(n==0)    return 1;        //恰好等于 0,则说明恰好等于某几位的平方和 
    if(idx==4)    return 0;        //超过四位数字 返回 0,不符合要求 
    for(int i=(int)sqrt(n);i>=1;i--){
        a[idx]=i;
        if(f(n-i*i,a,idx+1))    //满足要求 
        return 1;                //在这个地方正式退出程序 
    }
    return 0; //没有满足要求的数字和 
}
int main(){
    for(;;){
        int number;
        scanf("%d",&number);
        int a[]={0,0,0,0};        //初始化数组全部为0 
        int r=f(number,a,0);
        printf("%d:%d %d %d %d",r,a[0],a[1],a[2],a[3]);
    }
    return 0;
} 

 

蓝桥杯 大数定理

标签:

原文地址:http://www.cnblogs.com/sky-z/p/4415035.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!