zoukankan      html  css  js  c++  java
  • Hankson最大公约数最小公倍数的“逆问题”

    #include<stdio.h>
    int MaxYin(int a,int b)  //求最大公约数辗转相除法 
    {
     int t;
     if(a<b)//大数放a中,小数放b中
     {
      t=a;
      a=b;
      b=t;
     }
     while(b!=0&&a%b!=0)//一直除到余数为0
     {
      t=a%b;
      a=b;
      b=t;
     }
     return b;//返回计算结果 
    }
    int main()
    {
    	int num,i,j,a0,a1,b0,b1;
    	int result=0;   //结果 
    	printf("请输入组数:
    ");
    	scanf("%d",&num);
    	while(num--)
    	{	
    		printf("请输入a0,a1,b0,b1,且a0能被a1整除,b1能被b0整除。
    ");
    		scanf("%d%d%d%d",&a0,&a1,&b0,&b1);
    		for(i=1;i*i<b1;i++)  //在 1~sqrt(b1)的区间寻找满足条件的数 
    		{
    			if(b1%i==0)
    			{
    				if(i%a1==0&&(MaxYin(i/a1,a0/a1)==1)&&(MaxYin(b1/b0,b1/i)==1)) //满足条件的要求 
    				result++;
    				j=b1/i;
    				if(i==j||j%a1!=0)
    				continue;
    				if((MaxYin(j/a1,a0/a1)==1)&&(MaxYin(b1/b0,b1/j)==1)) 
    				result++;
    			}
    		}
    		printf("满足条件的有%d个
    ",result);
    		result-=result; //清空result的值并继续下一组数据 
    	}
    	return 0;
    }
    
  • 相关阅读:
    python实例
    date命令
    unbuntu禁用ipv6
    Oracle学习(一)
    深入浅出区块链笔记
    sqlserver索引
    Go学习(16):网络编程
    Go学习(15):并发与包
    Go学习(14):defer
    Go学习(13):异常
  • 原文地址:https://www.cnblogs.com/kangna/p/12618947.html
Copyright © 2011-2022 走看看