韩信点兵---数论趣题

题目:“今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?”

          按照今天的话来说:一个数除以3余2,除以5余3,除以7余2,求这个数...

          目前我还不明白孙子定理(中国剩余定理)..所以给出自己的笨方法...

         解:    设这个数为  n ,   则: n  %  3==2; n % 5==3; n % 7==2;

                   令:n = t1 * 3 + 2;   n = t2 * 5 + 3;   n = t3 * 7 + 2; 

                   则: 3 * t1  =  7 * t3 ;   (1)式;

                           3 * t1 = 5 * t2 + 1;   (2)式;

                           7 * t3 =  5 * t2 + 1;   (3)式;

                           由(1)得: (3,7)=1;则 t3 是3的倍数, t1 是 7 的倍数。                         

                           由(2),(3)式可得 5 * 12 +1 可以整除 3,7,t1, t2;

                          则  5 * t2  + 1 可以整除  21的一部分倍数 

                          则  5 * t2  = 21 * k - 1 ( k是整数);那我们现在换种思维来想,可以整除 5 的数无非个位一定是 0,或者5(数论中有证明),

                          则问题转化为  21 * k 的结果中个位一定要是 1 或者 6 ;那么显然 k 可以是  1, 6, 11, 16, 21,26, 31.... 等式才会成立...

                         则回到最初的  n 值,n =  5 * t2 + 3  = 21 * k + 2;( k= 1, 6, 11, 16 , 21, 26 ....等差数列)....

                         所以 n 可以取值  23, 128。。。

代码实现:

#include
using namespace std;
int main(){
    for(int i=1; i<=10000; i++ ){
        if(i%3==2 && i%5==3 && i%7==2)
        cout<     }
    cout<     for(int i=1; 21*i+2<=10000; i+=5){
        cout<<21*i+2<<"  ";
    }
    while(1);
}

亲!!好好比对额,所有的都是一致的额..
 
 

你可能感兴趣的:(数论)