编程中各种数:完数,因子,质数,偶数等

因子

整数a除以整数b(b≠0) 的商正好是整数而没有余数,我们就说b是a的因子。0不是0的因子。
假如整数n除以m,结果是无余数的整数,那么我们称m就是n的因子。
需要注意的是,唯有被除数,除数,商皆为整数,余数为零时,此关系才成立。反过来说,我们称n为m的倍数。

对于某一整数来说,其最大因子为n/2 (若n为偶数时,若为奇数最大因子小于n/2),在n/2〜n-1范围内没有数据可以整除此数。据此,我们可以把遍历范围缩小至1〜n-1

1
2
3
4
5
6
7
8
9
void fun (int n){
int i, s;
s = n;
for (i=1;i<=n/2;i++) {
if ((n%i) == 0) {
printf("%d\n",i); // 输出n的因子
}
}
}

完数

如果一个数恰好等于他的因子之和,这个数就称为“完数”,例如 6 = 1 + 2 + 3.

1
2
3
4
5
6
7
8
9
10
11
void fun (int n){
int i, s;
s = n;
for (i=1;i<=n/2;i++) {
if ((n%i) == 0) {
printf("%d\n",i);
s -= i;
}
}
if (s == 0) printf("%d 是一个完数\n", n);
}

奇数

奇数(odd)指不能被2整除的整数 ,数学表达形式为:2k+1, 奇数可以分为正奇数和负奇数。

1
2
3
4
5
void fun(int n) {
if ((n & 1) == 1) { // if (n%2 != 0)
printf("%d 是一个奇数\n", n);
}
}

偶数

数是能够被2所整除的整数。正偶数也称双数。

在十进制里,可以看个位数判定该数是奇数还是偶数:个位为1,3,5,7,9的数是奇数;个位为0,2,4,6,8的数是偶数。

1
2
3
4
5
void fun(int n) {
if ((n & 1) == 0) { // if (n%2 == 0)
printf("%d 是一个偶数\n", n);
}
}
打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2018-2024 Outsrkem
  • 访问人数: | 浏览次数:

      请我喝杯咖啡吧~

      支付宝
      微信