把能整除的部分去掉,留下不能整除的,即余数
10/2能被整除取模结果为0
举个栗子:
111 % 100 = 11
111 % 10 = 1
比如,你想知道一年中第 122 天是星期几,那么你就用【121%7】,结果为2。
诸如此类,121 % 7 = 2 来说, 一定会有(n % 7)的结果小于7,也就是说,任意数对7取模【%】相当于把任意数固定在0~6的范围
应用场景
1. 判别奇偶数
for (int i=0;i<=20;i++)
{
if (i%2==0)
{
Console.WriteLine(i);
}
}
2. 判别素数
质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为[合数](规定1既不是质数也不是合数)。
public static int isPrime(int n)
{
int i;
for (i = 2; i < n; ++i)
{
if (n % i == 0)
return 0;
}
return 1;
}
3. 求最大公约数
短除法的思路:先把每个数的因数找出来,然后再找出公因数,最后在公因数中找出最大公因数(最大公因数就是最大公约数)。
输入两位数先取最大值,利用最大值设置循环长度,分别找到最大值的因数,最后给if语句加&&后面的条件,解这道题的思路大概就这样
Console.WriteLine("请输入大于等于1的两位数:");
int num = Int32.Parse(Console.ReadLine());
int num2 = Int32.Parse(Console.ReadLine());
int max;
int maxnum=0;
if (num > num2)
max = num;
else
max = num2;
Console.Write("公因数: ");
for (int i =1;i<max;i++)
{
if (num%i==0&&num2%i==0)
{
Console.Write("{0},",i);
if (i> maxnum) { maxnum = i; }
}
}
Console.WriteLine();
Console.WriteLine("最大公约数为: {0}", maxnum);
Console.ReadLine();
}
4. 水仙花数
所谓的水仙花数是指:一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。例如153,370,371,407等都是水仙花数,就拿153来说,153 = 111 + 555 + 333.
满足上面的条件就是水仙花数,否则不是。在编写代码的过程中,重点是如何分解,如何表达出数字中的个位,十位,百位。
则可得:
i = n % 10; // 分解出百位
j = n / 10 % 10; // 分解出十位
k = n / 100; // 分解出百位
例题:求100~1000的水仙花数
int a, b, c;
for (int i=100;i<1000;i++)
{
a = i % 10; // 分解出个位
b = i / 10 % 10; // 分解出十位 (优先级 / 高于 %)
c = i / 100; // 分解出百位
if (i==a*a*a+b*b*b+c*c*c)
{
Console.WriteLine(i);
}
}