[经典算法] 找出某数以内与其互质的数

起因:前几天做了一个这样的题目,感觉自己变成了一个智障,来写写算法;

相关定义:

①质数定义:没有除 '1' 以外的因子的数就是质数。如:1、3、5、7、11等等。

②互质定义:两个数之间除 '1' 以外没有其他公共因子,那么这两个数互质。如:1 和 2、3 和 5。

③公共因子:能够被两个数整除的数就叫做这两个数的公共因子。如:2 是 4 和 6 的公共因子。

算法分析:

设有两数 a 和 b (a <= b),那么逐一判断从 1 到 a 的范围内是否有 a 与 b 的公共因子,如果有,放弃之后的判断,如果没有,继续判断,直到满足上面的互质定义。

算法实现:

//这里以找出 100 以内与 100 互质的数为例

C语言:

#include 
void GetPrimeNum(int maxNum) {
    printf("%4d 以内与其互质的数如下\n", maxNum);
    int count = 0;
    for (int i = 1; i <= maxNum; i++)
    {
        for (int j = 2; j <= i; j++)
        {
            if ((i % j == 0) && (maxNum % j == 0)) // 判断
            {
                break;
            }
            else if (j >= i)
            {
                count++; //数量 + 1
                printf("%4d", j);
            }//结束条件判断
        }//结束内层循环
    }//结束外层循环
    printf("\n除 1 之外,这样的数一共有:%4d 个", count);
}//函数结束

void main()
{
    GetPrimeNum(100); //求100以内与其互质的数;
}

  

posted @ 2019-10-15 16:30  绎丶江忆南  阅读(1847)  评论(0)    收藏  举报