这几天看老先生的博客发现好多有趣的结论,就拿判断7的倍数判断来说,我立马写了个程序(莫笑=_=!)
分享给我自己
#include<stdio.h>
static int len; //大数的位数
int l_num[100000];//储存大数
int getnum(){
char a;
a=getchar();
if(a=='\n')
return 0;
else getnum();
l_num[len]=a-'0';
len++;
return 1;
}
int main()
{
char a[10];
printf("输入ENTER以确认输入\n");
while(gets(a),a[0]='z'){ //换行以循环输入;
int time,f=-1;
int tre;
while(len--)
l_num[len]=0;
len++;
getnum();
for(int i=len-1;i>=0;i--)
printf("%d",l_num[i]);
putchar('\n');
/*三位分节法:一个自然数从个位向左数,
3位一节(最后不足3位时也算一节),右起第一节减第二节、加第三节、减第四节、…
…照这样减加交错,如果得数能被7整除,这个自然数就能被7整除。*/
if(len%3==0)
time=len/3;
else
time=len/3+1;
for(f=1,i=0,tre=0;i<time;i+=3,f=-f)
tre+=f*(l_num[i]+l_num[i+1]*10+l_num[i+2]); //计算那个自然数以判断是否为7的倍数
if(tre%7!=0||tre==0)
printf("该数不是7的倍数\n");
else
printf("该数是7的倍数\n");
}
return 0;
}
在安利下老先生的博客:点击打开链接
在安利下老先生的博客:点击打开链接