选出1-100的质数用c语言
时间: 2024-09-26 14:12:59 浏览: 28
在C语言中,我们可以编写一段程序来找出1到100之间的所有质数。这里是一个简单的示例,使用了“埃拉托斯特尼筛法”:
```c
#include <stdio.h>
// 函数定义:检查是否为质数
int is_prime(int num) {
if (num <= 1)
return 0;
for (int i = 2; i * i <= num; i++) {
if (num % i == 0)
return 0; // 如果能被整除,不是质数
}
return 1; // 否则是质数
}
// 主函数,打印1到100的质数
void print_primes() {
int limit = 100;
printf("Prime numbers between 1 and %d are:\n", limit);
for (int i = 2; i <= limit; i++) {
if (is_prime(i))
printf("%d ", i);
}
printf("\n");
}
int main() {
print_primes();
return 0;
}
```
这个程序会遍历1到100的所有数字,并通过`is_prime`函数检查每个数字是否为质数。如果是,就将其打印出来。
相关问题
c语言求100以内最大的十个素数
求100以内的素数,可以使用筛选法来实现。具体步骤如下:
1. 将2~100的整数放入一个数组中;
2. 从2开始,将其所有倍数的数都标记为非素数;
3. 继续找到下一个未被标记为非素数的数,重复第二步操作;
4. 所有未被标记为非素数的数就是100以内的素数。
根据这个方法,我们可以得到100以内的所有素数:2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97。
接下来,我们可以将这些素数按照从大到小的顺序排列,并选出前十个最大的素数,即:97,89,83,79,73,71,67,61,59,53。
2.输入五串任意长度的字符,选出每串最大的数字字符(连续的数字字符算一个数字),和最大的ASCI码字符。如果数字为素数,数字和选出的ASCI码转化后的数字相加,并输出结果。如果数字不是素数,用选出的ASCI(ASCI)码转化后的数字*10减去数字,用c语言实现并输出结果。
在C语言中实现这个功能,你需要先定义几个辅助函数:用于判断是否为素数、获取ASCII值以及比较字符串中的字符。这里是一个简单的示例:
```c
#include <stdio.h>
#include <string.h>
// 判断是否为素数
int is_prime(int num) {
if (num <= 1)
return 0;
for (int i = 2; i * i <= num; i++) {
if (num % i == 0)
return 0;
}
return 1;
}
// 获取字符的ASCII码
int ascii_code(char ch) {
return (int)ch;
}
// 比较字符串中的字符并找到最大数字和ASCII码字符
void find_max_and_prime(const char* str, int* max_num, char* max_ascii) {
int prev_char = '\0'; // 初始化前一个字符
*max_num = INT_MIN; // 初始化最大数字
*max_ascii = '\0';
for (const char* c = str; *c != '\0'; c++) {
int digit = 0;
while (*c >= '0' && *c <= '9') { // 连续数字字符视为一个数字
digit = digit * 10 + (*c - '0');
c++;
}
if (digit > *max_num) {
*max_num = digit;
*max_ascii = '\0';
} else if (digit == *max_num) {
*max_ascii = '\0'; // 如果数字一样,检查ASCII码
}
if (ascii_code(*c) > ascii_code(prev_char)) {
*max_ascii = *c; // 更新最大ASCII码字符
}
prev_char = *c;
}
}
int main() {
char input[5][100]; // 五个字符串数组
for (int i = 0; i < 5; i++) {
fgets(input[i], sizeof(input[i]), stdin);
}
int primes[5] = {0}; // 存储每个字符串的最大数字作为素数结果
char asciis[5];
for (int i = 0; i < 5; i++) {
find_max_and_prime(input[i], &primes[i], asciis[i]);
// 判断素数并计算相应操作
if (is_prime(primes[i])) {
printf("对于字符串%d,数字部分:%d 和 ASCII码:%c 的和为:%d\n",
i+1, primes[i], asciis[i], primes[i] + ascii_code(asciis[i]));
} else {
printf("对于字符串%d,数字部分:%d 乘以10减去ASCII码:%c 的结果为:%d\n",
i+1, primes[i], asciis[i], primes[i] * 10 - ascii_code(asciis[i]));
}
}
return 0;
}
```
这段代码首先读入五个字符串,然后遍历每个字符串查找最大数字字符和ASCII码字符。之后,它会检查找出的数字是否为素数,根据不同的情况计算和输出结果。
阅读全文