作者在 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;
}