C语言算法示例:素数判断、日期计算、完数查找、求和、最大公约数与最小公倍数
以下是使用C语言解决上述问题的代码示例:
- 判断一个数是否为素数
#include <stdio.h>
int isPrime(int num) {
if (num <= 1) {
return 0;
}
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
return 0;
}
}
return 1;
}
int main() {
int num;
printf("请输入一个整数: ");
scanf("%d", &num);
if (isPrime(num)) {
printf("%d是素数\n", num);
} else {
printf("%d不是素数\n", num);
}
return 0;
}
- 判断某年某月某日是这一年的第几天
#include <stdio.h>
int isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
int getDayOfYear(int year, int month, int day) {
int daysInMonth[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int dayOfYear = 0;
for (int i = 1; i < month; i++) {
dayOfYear += daysInMonth[i];
}
dayOfYear += day;
if (isLeapYear(year) && month > 2) {
dayOfYear += 1;
}
return dayOfYear;
}
int main() {
int year, month, day;
printf("请输入年份: ");
scanf("%d", &year);
printf("请输入月份: ");
scanf("%d", &month);
printf("请输入日期: ");
scanf("%d", &day);
int dayOfYear = getDayOfYear(year, month, day);
printf("%d年%d月%d日是该年的第%d天\n", year, month, day, dayOfYear);
return 0;
}
- 找出1000以内的所有'完数'
#include <stdio.h>
int isPerfectNumber(int num) {
int sum = 0;
for (int i = 1; i <= num / 2; i++) {
if (num % i == 0) {
sum += i;
}
}
return sum == num;
}
int main() {
printf("1000以内的完数有: ");
for (int i = 1; i <= 1000; i++) {
if (isPerfectNumber(i)) {
printf("%d ", i);
}
}
printf("\n");
return 0;
}
- 求n个数的和并输出
#include <stdio.h>
int main() {
int n, num, sum = 0;
printf("请输入n的值: ");
scanf("%d", &n);
printf("请输入%d个数: ", n);
for (int i = 0; i < n; i++) {
scanf("%d", &num);
sum += num;
}
printf("这%d个数的和为: %d\n", n, sum);
return 0;
}
- 求两个正整数的最大公约数和最小公倍数
#include <stdio.h>
int getGCD(int a, int b) {
while (a != b) {
if (a > b) {
a -= b;
} else {
b -= a;
}
}
return a;
}
int getLCM(int a, int b) {
return (a * b) / getGCD(a, b);
}
int main() {
int num1, num2;
printf("请输入两个正整数: ");
scanf("%d %d", &num1, &num2);
int gcd = getGCD(num1, num2);
int lcm = getLCM(num1, num2);
printf("%d和%d的最大公约数为: %d\n", num1, num2, gcd);
printf("%d和%d的最小公倍数为: %d\n", num1, num2, lcm);
return 0;
}
请注意,以上代码示例仅供参考,可能还有其他更简洁或更高效的实现方式。
原文地址: https://www.cveoy.top/t/topic/b9Rh 著作权归作者所有。请勿转载和采集!