⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 长整数的乘积求余及应用.c

📁 长整数的乘积求余及应用,能使得大整数的乘积变为小程序
💻 C
字号:
#include<stdio.h>
#include<math.h>
void clrscr();

long cal(long k,long q,long b,long c)
{long i,mid3,total;
 if(k<0){k=-k;q=-q;}
 mid3=q*b;
 for(i=1;i<=k;i++)
	{if(i==1)total=mid3;
     else if(fabs(c)-fabs(total)<=fabs(mid3))
		    if(c<0 && mid3>0 || c>0 && mid3<0)
              total=total+c+mid3;
			else total=total-c+mid3;
          else total+=mid3;
	}
 return total;
}
			
void main()
{long a,b,c,q,r,k,mid1,mid2,result;
 long cal(long,long,long,long);
 clrscr();
 printf("请输入任意长整数:a=");
 scanf("%ld",&a);
 printf("请输入任意长整数:b=");
 scanf("%ld",&b);
 printf("请输入任意长整数:c=");
 scanf("%ld",&c);
 if(a==0 || b==0)result=0;
 else
	{if(fabs(a)>fabs(c))a%=c;
     if(fabs(b)>fabs(c))b%=c;
     if(fabs(c)/fabs(a)>=fabs(b) || fabs(a)==1 || fabs(b)==1)
		 result=a*b%c;
	 else
	 {q=c/b;k=a/q;r=a%q;
	  mid1=r*b;
	  mid2=cal(k,q,b,c);
	  if(fabs(c)-fabs(mid2)<=fabs(mid1))
		{if(c<0 && mid2>2 || c>0 && mid2<0)mid2+=c;
		 else mid2-=c;
         result=mid1+mid2;
		}
	 }
	}
 printf("\n\n  a*b%c所得结果为:%ld",result);

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -