c语言 判断互质,[经典算法] 找出某数以内与其互质的数

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

相关定义:

①质数定义:没有除 '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以内与其互质的数;

}

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值