对于大数(?)的是否为7的倍数的判断

 


这几天看老先生的博客发现好多有趣的结论,就拿判断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;
}

																			
在安利下老先生的博客:点击打开链接 





在安利下老先生的博客:点击打开链接 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值