zoukankan      html  css  js  c++  java
  • 蓝桥杯 TC_荣耀之路

    南阳理工学院的新生交流题目
    思路
    先查询n,m之间素数个数,若个数为素数,则输出n,m的最小公倍数,否则输出n,m的最大公约数。
    数据范围不大,从min(n,m)到max(n,m)一路遍历,统计素数个数,再判断素数的个数是否为素数,若是,输出(n,m)最小公倍数,否则输出(n,m)的最大公约数。

    #include<iostream>
    #include<string.h>
    #include<matn.h> 
    int gcd(int a,int b)
    {
    	int t;
    	while(b!=0)
    	{
    		t=a;
    		a=b;
    		b=t%a;
    	}
    	return a;
    }
    int lcm(int a,int b)
    {
    	return a*b/gcd(a,b);
    }
    int judge(int a)
    {
    	int i;
    	for(i=2;i<sqrt(a);i++)
    	{
    		if(a%i==0)
    		{
    			return 0;
    		}
    	}
    	if(a==0||a==1)
    	{
    		return 0;
    	}
    	return 1;
    }
    
    int main()
    {
    	int nn;
    	scanf("%d%d",&nn);
    	while(nn--)
    	{
    		int n,m,prime=0,temp;
    		scanf("%d%d",&n,&m);
    		if(n<m)
    		{
    			temp=n;
    			n=m;
    			m=temp;
    		}
    		for(i=n;i<=m;i++)
    		{
    			if(judge(i))
    			{
    				prime++;
    			}
    		}
    		if(judge(prime))
    		{
    			printf("%d
    ",lcm(n,m));
    		}
    		else{
    			printf("%d
    ",gcd(n,m));
    		}
    	}
    	
    }
    
  • 相关阅读:
    oo第四次总结
    oo第三次总结
    补给站总结
    OO第四次单元总结
    OO第三次单元总结
    OO第二次单元总结
    OO第一次单元总结
    提问回顾与个人总结
    软件工程结对作业博客
    OO第一次单元总结
  • 原文地址:https://www.cnblogs.com/AmosAlbert/p/12832316.html
Copyright © 2011-2022 走看看