首页 > 其他 > 详细

蓝桥杯 大数定理

时间:2015-04-10 17:20:50      阅读:298      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!