正在加载图片...
t=k*100+j*10+i (i=0&kj= else if (i==0) t/=10 f (s>10 & s==t & prime(s)) printf( %d", s) 106自守数是指一个数的平方的尾数等于该数自身的自然数。如:762=5776,求出 20000以内的自守数 解:乘法运算中积是由乘数中的每一位和被乘数相乘的部分积相加后得到的,自守数考虑 积的最后几位(由数字位数决定),并不是每一个部分积的每一位都会对积的后几位有影响 对积的后n几位产生影响的部分积为: 第一个部分积:被乘数最后n位*乘数倒数第1位 第二个部分积:被乘数最后n-1位*乘数倒数第2位 第三个部分积:被乘数最后n-2位*乘数倒数第3位 将以上部分积的后n位求和后截取后n位就是n位数乘机的后n位。参考程序中n是所考 虑的自守数的可能范围,k是n的位数,循环中为截取被乘数的系数,k是截取部分积时 的系数,m用于累计部分积的最后n位,i是截取乘数相应位时的系数: #include < stdio. h> maino llong i, k, kk printf( follow is output: \n") for(n=0;n<200000:+ for(m=n,k=1;(m/=10)>0;k*=10); kk=k*10; hile (k>0) m=(m+(n%(k*10)*(n%in%(i/10))%k k/=10 i*=10 if (n==m) printf(%ld" n)t=k*100+j*10+i; if (i==0&&j==0) t/=100; else if (i==0) t/=10; if (s>10 && s==t && prime(s)) printf("%d ",s); } } 10.6 自守数是指一个数的平方的尾数等于该数自身的自然数。如:762=5776,求出 2000000 以内的自守数。 解:乘法运算中积是由乘数中的每一位和被乘数相乘的部分积相加后得到的,自守数考虑 积的最后几位(由数字位数决定),并不是每一个部分积的每一位都会对积的后几位有影响, 对积的后 n 几位产生影响的部分积为: 第一个部分积:被乘数最后 n 位 * 乘数倒数第 1 位 第二个部分积:被乘数最后 n-1 位 * 乘数倒数第 2 位 第三个部分积:被乘数最后 n-2 位 * 乘数倒数第 3 位 … 将以上部分积的后 n 位求和后截取后 n 位就是 n 位数乘机的后 n 位。参考程序中 n 是所考 虑的自守数的可能范围,k 是 n 的位数,循环中为截取被乘数的系数,kk 是截取部分积时 的系数,m 用于累计部分积的最后 n 位,i 是截取乘数相应位时的系数: #include <stdio.h> main() {long i,k,kk,n,m; printf("Follow is output:\n"); for (n=0;n<2000000;n++) { for (m=n,k=1;(m/=10)>0;k*=10); kk=k*10; m=0; i=10; while (k>0) { m=(m+(n%(k*10))*(n%i- n%(i/10)))%kk; k/=10; i*=10; } if (n==m) printf("%ld ",n); }
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有