起因:前几天做了一个这样的题目,感觉自己变成了一个智障,来写写算法;
相关定义:
①质数定义:没有除 '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以内与其互质的数;
}