int main() { int m, n; scanf("%d %d", &m, &n); int ret = m < n ? m : n;//求得到m和n中较小的那个数 while (1) { if (m%ret == 0 && n%ret == 0)//从m与n的最小值中开始减,减到if成立 { break;//当ret同时能够被m和n整除时,ret就是最大公约数 } ret--; } printf("%d", ret); return0; }
法2辗转相除法求最大公约数
1 2 3 4 5 6 7 8 9 10 11 12 13 14
int main() { int m, n; scanf("%d %d", &m, &n);//假设输入2418,ret=24%18=6,将n的值赋给m,m=18,ret的值赋给n,ret=6,18%6=0;while就停下来此时n的值就是最大公约数,若输入的是18,24,18/%24=18,也会把两者进行交换 int ret = 0; while (ret = m % n)//ret为0就停下来了, { m = n; n = ret; } printf("%d", n); return0; }
intmain() { int flag = 1; int num,i; scanf("%d", &num); for (i = 2; i < num; i++)//从2到num-1对num进行试除,一旦除成功就跳出去 { if (num%i == 0) { flag = 0; break; } } if (flag) { printf("是素数"); } else printf("不是素数"); return0; }
intmain() { int i; int flag = 1; int num = 13; for (i = 2; i <= sqrt(num); i++) { if (num%i == 0) { flag = 0; break; } } if (flag) { printf("是素数"); } return0; }