第三章课后习题(2)

例3-9

题目描述:编写函数判别一个数是否是质数,在主程序中实现输入输出。

设计思路:

1.输入一个数。

2.让这个数除余2到该数的一半,分析是否有余0是。

3.有则不是,否则是。

流程图:

 代码实现:

#include<iostream>
using namespace std;
bool Is(int a)
{
    for (int i = 2; i < a / 2; i++)
    {
        if (a % i == 0)
        {
            return 0;
        }
        else
            return 1;
    }
}
int main() {
    bool is;
    int x;
    cin >> x;
    is = Is(x);
    if (is)
    {
        cout << "质数";
    }
    else
    {
        cout << "非质数";
    }
}

例3-10

题目描述:编写函数求两个整数的最大公约数和最小公倍数。

设计思路:

1.利用辗转相除法求两个数的最大公约数。

2.用两数相乘除以最大公约数求得最小公倍数。

流程图:

 代码实现:

#include<iostream>
using namespace std;
int gcd(int a, int b)
{
    if (b == 0)
        return a;
    else
        gcd(b, a % b);
}
int g(int a, int b)
{
    int d=gcd(a, b);
    return a * b / d;
}
int main() {
    int a, b;
    cin >> a >> b;
    cout<<gcd(a, b);
    cout << g(a, b);
    return 0;

}

例3-12

题目描述:在主程序中提示输入整数n,编写函数用递归的方法求1+2+。。。+n的值。

设计思路:

1.设计一个函数键入一个用于存储值的符号,键入一个n,

2.每运行一次该函数,n的值减少1到n=0是为止。

3.输出计数值。

流程图:

 代码实现:

#include<iostream>
using namespace std;
int sum(int s, int n)
{
    s = s + n;
    n = n - 1;
    if (n != 0)
    {
        sum(s, n);
    }
    else
        return s;
}
int main()
{
    int n;
    cin >> n;
    int a = 0;
    cout<<sum(a, n);
    return 0;
}

 

posted on 2023-04-24 22:36  石铁生  阅读(24)  评论(0)    收藏  举报