大衍求一术

作者在 2010-02-28 15:40:17 发布以下内容

      大衍求一术

大衍求一术口诀:

三人同行七十稀,五数梅花二十一,七子团圆正半月,除百零五便得知。隐含的算法内容是:对一个正整数,先用3去除所得到的余数与70相乘,再用5去除所得到的余数与21相乘,最后用7去除所得到余数与15相乘,三个积相加,并不断用105去减,直到差小于105,就得到最小正整数解。

         代码:

         #include<stdio.h>

 

int remainder(int i);

 

main()

{

         int i;

 

         for (i=1;i<100;i++)

         {

                   if((i-1)%2==0)

                            printf("\n");

                   remainder(i);

         }

         getch();

}

 

int remainder (int n)

{

         int r3,r5,r7,mul,sub,div;

 

         r3=n%3;

         r5=n%5;

         r7=n%7;

 

         mul=r3*70+r5*21+r7*15;

         div=mul/105;

         sub=mul-div*105;

 

         printf(" %d:%d*70+%d*21+%d*15-%d*105=%d ",n,r3,r5,r7,div,sub);

 

         return 1;

}

默认分类 | 阅读 1262 次
文章评论,共0条
游客请输入验证码
浏览2984次
文章归档
最新评论