离散数学实验二

[复制链接]
查看200 | 回复0 | 2024-1-10 11:09:48 | 显示全部楼层 |阅读模式
一、实验目的:二、实验内容:
1、输入集合A和B,输出公式 file:///C:/Users/WANGTA~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif。
2、输入a和b,输出其最小公倍数和最大公约数。
3、验证:设A是有限的非空集合,|A|=n,对于A上的任意关系R, file:///C:/Users/WANGTA~1/AppData/Local/Temp/msohtmlclip1/01/clip_image004.gif=file:///C:/Users/WANGTA~1/AppData/Local/Temp/msohtmlclip1/01/clip_image006.gif
三、实验语言:
   采用matlab/C/C++语言实现。
四、实验原理和实现过程(算法描述):实验原理
1.
差集(A - B):

思路: 将属于集合A但不属于集合B的元素找出来。
步骤: 遍历集合A的每个元素,检查它是否也在集合B中。如果不在B中,则该元素属于A - B。

对称差(A ⊕ B):

思路: 找出只属于A或只属于B的元素。
步骤: 遍历集合A和集合B的元素,对于每个元素,检查它是否只存在于其中一个集合中。如果是,则属于对称差。

交集(A × B):

思路: 找出同时属于集合A和集合B的元素。
步骤: 遍历集合A的每个元素,检查它是否也在集合B中。如果是,则该元素属于交集。
2.
最大公约数:
思路: 利用欧几里得算法,通过反复用较小数除较大数并取余,直到余数为0,此时除数即为最大公约数。

最小公倍数:
思路: 利用最大公约数的性质,LCM(A, B) = (A * B) / GCD(A, B)。

五、实验数据及结果分析:
1.2.
file:///C:/Users/WANGTA~1/AppData/Local/Temp/msohtmlclip1/01/clip_image008.gif
3.
file:///C:/Users/WANGTA~1/AppData/Local/Temp/msohtmlclip1/01/clip_image010.gif
4. 在有限集合A上,当i大于集合A的元素个数n时,再次进行关系的幂运算并取并集不再产生新的元素,因此对于 file:///C:/Users/WANGTA~1/AppData/Local/Temp/msohtmlclip1/01/clip_image012.gif中的关系元素,它们在 file:///C:/Users/WANGTA~1/AppData/Local/Temp/msohtmlclip1/01/clip_image014.gif中已经全部包含。因此,两者的并集是相等的。
六、源程序清单:
1.
#include <stdio.h>

void printSet(int set[], int size) {
    for (int i = 0; i < size; ++i) {
        printf("%d ", set);
    }
    printf("\n");
}

void calculateSets(int A[], int sizeA, int B[], int sizeB) {
    // A - B (Difference)
    printf("A - B: ");
    for (int i = 0; i < sizeA; ++i) {
        int isInB = 0;
        for (int j = 0; j < sizeB; ++j) {
            if (A == B[j]) {
                isInB = 1;
                break;
            }
        }
        if (!isInB) {
            printf("%d ", A);
        }
    }
    printf("\n");

    // A ⊕ B (Symmetric Difference)
    printf("A ⊕ B: ");
    for (int i = 0; i < sizeA; ++i) {
        int isInB = 0;
        for (int j = 0; j < sizeB; ++j) {
            if (A == B[j]) {
                isInB = 1;
                break;
            }
        }
        if (!isInB) {
            printf("%d ", A);
        }
    }
    for (int i = 0; i < sizeB; ++i) {
        int isInA = 0;
        for (int j = 0; j < sizeA; ++j) {
            if (B == A[j]) {
                isInA = 1;
                break;
            }
        }
        if (!isInA) {
            printf("%d ", B);
        }
    }
    printf("\n");

    // A × B (Intersection)
    printf("A × B: ");
    for (int i = 0; i < sizeA; ++i) {
        for (int j = 0; j < sizeB; ++j) {
            if (A == B[j]) {
                printf("%d ", A);
                break;
            }
        }
    }
    printf("\n");
}

int main() {
    int sizeA, sizeB;

    // Input sizes of sets A and B
    printf("Enter the size of set A: ");
    scanf("%d", &sizeA);

    int A[sizeA];
    printf("Enter elements of set A:\n");
    for (int i = 0; i < sizeA; ++i) {
        scanf("%d", &A);
    }

    printf("Enter the size of set B: ");
    scanf("%d", &sizeB);

    int B[sizeB];
    printf("Enter elements of set B:\n");
    for (int i = 0; i < sizeB; ++i) {
        scanf("%d", &B);
    }

    // Calculate and print results
    calculateSets(A, sizeA, B, sizeB);

    return 0;
}
2.
#include <stdio.h>

// Function to calculate GCD (Euclidean algorithm)
int findGCD(int a, int b) {
    while (b != 0) {
        int temp = b;
        b = a % b;
        a = temp;
    }
    return a;
}

// Function to calculate LCM
int findLCM(int a, int b) {
    return (a * b) / findGCD(a, b);
}

int main() {
    int num1, num2;

    // Input two numbers
    printf("Enter the first number: ");
    scanf("%d", &num1);

    printf("Enter the second number: ");
    scanf("%d", &num2);

    // Calculate GCD and LCM
    int gcd = findGCD(num1, num2);
    int lcm = findLCM(num1, num2);

    // Output results
    printf("GCD of %d and %d is: %d\n", num1, num2, gcd);
    printf("LCM of %d and %d is: %d\n", num1, num2, lcm);

    return 0;
}
七、其他收获和体会:

评分

参与人数 1金币 +5 收起 理由
admin + 5 感谢分享,奖励5个金币,期待更多优质内容.

查看全部评分

相关帖子

您需要登录后才可以回帖 登录 | 立即注册 微信登录 手机动态码快速登录

本版积分规则