c++打卡第六天

一、问题描述

定义一个函数判断一个数是否为质数。

二、设计思路

①输入一个数,同时进入函数判断。

②进入函数可以通过for循环判断n是否为质数

③当这个数为1 时,不是质数,而当这个数是2 3时,是质数。

④可以通过循环质因数,其范围到n的开平方。

三、流程图

四、代码实现

 

#include<iostream>
#include<cmath>
using namespace std;
int is_prime(int x)
{
   if(x==1)
   {
       return 0;
   }
    else
    {
    for(int i=2;i<=sqrt(x);i++)
    {
        if(x%i==0)
        {
            return 0;
        }    
    }
    }
    return 1;
}
int main()
{
    int n;
    cin>>n;
    int len=is_prime(n);
    if(len==1)
    {
        cout<<n<<"是质数"<<endl; 
    }
    else
    {
        cout<<n<<"不是质数"<<endl;
    }
    return 0;
}

五、运行结果

 Ⅱ

一、问题描述

编写函数求两个数的最大公约数和最小公倍数

二、设计思路

①、输入两个数a,b,同时对这两个数排序,将大数拍到前面。

②、调用求最大公约数的函数,如果小数为0的话那么最大公约数为大数。

③、否则使用辗转相除法,大数除余小数,此时将小数赋值为大数a,余数赋值为b,继续调用函数。最终直到小数b为0,返回a。

④、a与b的乘积等于最大公约数乘以最小公倍数。

三、流程图

 四、代码实现

#include<iostream>
using namespace std;
int gys(int x,int y)
{
    if(y==0)
    {
        return x;
    }
    return gys(y,x%y);
}
int main()
{
    int a,b;
    cin>>a;
    cin>>b;
    int t;
    if(a<b)
    {
        t=a;
        a=b;
        b=t;
    }
    int g=gys(a,b);
    int l=(a*b)/g;
    cout<<"最大公约数为"<<g<<endl;
    cout<<"最小公倍数为"<<l<<endl; 
    return 0;
}

五、代码实现

 

posted @ 2023-04-16 13:44  七安。  阅读(13)  评论(0编辑  收藏  举报