c++输出 2 到 n 区间的所有素数
时间: 2023-05-30 18:01:49 浏览: 101
以下是C语言实现:
```c
#include <stdio.h>
int main() {
int n, i, j;
printf("请输入一个正整数:");
scanf("%d", &n);
printf("2到%d的素数有:\n", n);
for (i = 2; i <= n; i++) {
for (j = 2; j <= i; j++) {
if (i % j == 0 && i != j) {
break;
}
if (i == j) {
printf("%d ", i);
}
}
}
return 0;
}
```
运行结果:
```
请输入一个正整数:20
2到20的素数有:
2 3 5 7 11 13 17 19
```
相关问题
本题要求统计给定整数m和n区间内素数的个数并对它们求和。 输入格式: 输入在一行中给出两个正整数m和n(1≤m≤n≤500)。 输出格式: 在一行中顺序输出m和n区间内素数的个数以及它们的和,数字间以空格分隔。 输入样例: 10 31 输出样例: 7 143
题目描述
本题要求统计给定整数m和n区间内素数的个数并对它们求和。
输入格式:
输入在一行中给出两个正整数m和n(1≤m≤n≤500)。
输出格式:
在一行中顺序输出m和n区间内素数的个数以及它们的和,数字间以空格分隔。
输入样例:
10 31
输出样例:
7 143
算法1
(暴力枚举) $O(n\sqrt{n})$
时间复杂度
参考文献
python3 代码
C++ 代码
算法2
(暴力枚举) $O(n\sqrt{n})$
blablabla
时间复杂度
参考文献
C++ 代码
C语言孪生素数 相差为2的两个素数称为孪生素数。例如,3与5,41与43等都是孪生素数。设计程序求出指定区间上的所有孪生素数对。区间上限和下限由键盘获取。输入格式: 区间上限和下限的输入格式: "%ld,%ld" 输出格式: 区间上限和下限的输入提示信息:"please input c,d(c>2):\n" 孪生素数的输出格式:"(%ld,%ld)\n" 所有孪生素数对的总数输出格式: "total=%d\n"
好的,下面是代码实现:
```c
#include <stdio.h>
#include <math.h>
int is_prime(long n) {
if (n <= 1) {
return 0;
}
long i;
for (i = 2; i <= sqrt(n); i++) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
int main() {
long c, d, i, count = 0;
printf("please input c,d(c>2):\n");
scanf("%ld,%ld", &c, &d);
if (c % 2 == 0) {
c++;
}
for (i = c; i <= d - 2; i += 2) {
if (is_prime(i) && is_prime(i + 2)) {
printf("(%ld,%ld)\n", i, i + 2);
count++;
}
}
printf("total=%d\n", count);
return 0;
}
```
代码解释:
首先定义了一个函数 `is_prime`,用于判断一个数是否为素数。如果是素数,返回1;否则返回0。
然后使用 `scanf` 从键盘输入区间上限和下限。
由于孪生素数相差为2,所以我们只需要从上限(下限如果是偶数也不可能是孪生素数)开始,每次加2,判断当前数和下一个数是否都为素数。如果是,则输出这一对孪生素数,并且计数器加1。
最后输出孪生素数总数。
需要注意的是,当输入的上限为偶数时,需要将其加1,使其变为奇数。这是因为孪生素数只可能是奇数和奇数之间的差值为2。
阅读全文