#include<stdio.h> intmain() { int i, n; printf("请输入一个数:"); scanf("%d", &n); for (i = 2; i < n; i++) { if (n % i == 0) break; //整除则退出循环(或者i加到n则退出循环) } if (i < n) //证明i没有加到n就有整除了,所以该数不是素数 printf("该数不是素数"); else//i加到n都没有整除,证明该数是素数 printf("该数是素数"); return0; }
求100以内全部素数的和
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
#include<stdio.h> intmain() { int i, n, sum = 0; for (n = 2; n <= 100; n++) { for (i = 2; i < n; i++) { if (n % i == 0)break; //整除则退出循环(或者i加到n则退出循环) } if (i >= n) //i加到n都没有整除,证明该数是素数 { sum += n; //1到100的素数相加 } } printf("sun=%d\n", sum); return0; }
#include<stdio.h> intmain() { int m, n, i, j, count = 0, sum = 0; printf("请输入要求素数的区间m和n\n"); scanf("%d %d", &m, &n); if (m <= 1) { m = 2; } for (i = m; i < n; i++) //区间为m~n { int flag = 1; //标志位要设置在for循环里面,不然每次循环之后标志位都随之改变 for (j = 2; j < i; j++) { if (i % j == 0) { flag = 0; //i不是素数,标志位赋为0 break; //跳出循环 } } if (flag == 1) //如果标志位为1则i为素数 { count++; //个数++ sum += i; //素数的和 } } printf("count=%d,sum=%d", count, sum); return0; }
年份问题
判断某年是否是闰年
1 2 3 4 5 6 7 8 9 10 11 12 13 14
#include<stdio.h> intmain() { int year; printf("请输入一个年份:\n"); scanf("%d", &year); if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) //能被4整除但不能被100整除 或者 能被400整除的年份为闰年 { printf("%d年是闰年", year); } else printf("%d年不是闰年", year); return0; }
#include<stdio.h> intmain() { int m, n, i, j, t; printf("请输入两个正整数:\n"); scanf("%d %d", &m, &n); if (m > n) //如果m大于n则两个数交换 { t = m; m = n; n = t; } for (i = m; i > 0; i--) //选两个数中比较小的数作为i的起始值,一直-1直到找出最小公倍数为止 { if (m % i == 0 && n % i == 0) //如果两个数同时除以i都整除的话证明i为他们的最小公倍数 { printf("最小公倍数为%d\n", i); j = (m * n / i); //最大公约数为两个整数相乘除以他们的最小公倍数 printf("最大公约数2为%d\n", j); break; //如果找到最小公倍数则跳出循环 } } return0; }
#include<stdio.h> intmain() { intmath(int x, int y); //函数声明 int m, n, a, b; printf("请输入两个正整数:\n"); scanf("%d %d", &m, &n); a = math(m, n); //函数调用(函数有一个返回值,所以先定义一个变量a把返回值赋给a) printf("最小公倍数为:%d\n", a); b = (m * n / a); //最大公约数为两个整数相乘除以他们的最小公倍数 printf("最大公约数为:%d\n", b); return0; } intmath(int x, int y) { int i, j, t; if (x > y) //如果x大于y则两个数交换 { t = x; x = y; y = t; } for (i = x; i > 0; i--) //选两个数中比较小的数作为i的起始值,一直-1直到找出最小公倍数为止 { if (x % i == 0 && y % i == 0) //如果两个数同时除以i都整除的话证明i为他们的最小公倍数 { j = i; break; //如果找到最小公倍数则跳出循环 } } return j; //将最小公倍数返回出去 }
#include<stdio.h> intmain() { int x, y, z, t; printf("请输入三个整数:\n"); scanf("%d %d %d", &x, &y, &z); if (x > y) //如果x大于y,则两个数交换位置 { t = x; x = y; y = t; } if (x > z) //如果x大于z,则两个数交换位置 { t = x; x = z; z = t; } if (y > z) //如果y大于z,则两个数交换位置 { t = y; y = z; z = t; } printf("三个整数从小到大的排列顺序为:%d %d %d", x, y, z); return0; }
倒序输出数字
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
#include<stdio.h> intmain() { int num, r; printf("请输入一个数字:\n"); scanf("%d", &num); printf("倒排输出的结果为:\n"); while (num != 0) //数字不等于0则进入循环 { r = num % 10; //取出最低位赋给r printf("%d", r); num /= 10; //去掉最低位 } return0; }