#include <stdio.h> #include <stdbool.h> #include <math.h> bool is-prime(int n) { if(n<=1) {return false; } for(int i=2;i<=sqrt(n);i++) { if(n%i==0) {return false; } } return turn; } int main() { int n; scanf("5d",&n); int m=n+1; while( is-prime(m)) { m+=1; } printf("%d\n",m); return 0; } 检查
时间: 2024-03-20 17:40:44 浏览: 70
这段代码有几个问题:
1. 第6行的 return turn 应该改为 return false。
2. 第13行的 scanf("5d",&n) 应该改为 scanf("%d",&n)。
3. 第17行的 is-prime 应该改为 is_prime。
修改后的代码如下:
```
#include <stdio.h>
#include <stdbool.h>
#include <math.h>
bool is_prime(int n) {
if(n<=1)
{
return false;
}
for(int i=2;i<=sqrt(n);i++)
{
if(n%i==0)
{
return false;
}
}
return false;
}
int main() {
int n;
scanf("%d",&n);
int m=n+1;
while(is_prime(m))
{
m+=1;
}
printf("%d\n",m);
return 0;
}
```
相关问题
#include <stdio.h> #include <stdbool.h> #include <math.h> bool is_prime(int n) { if (n <= 1) { return false; } for (int i = 2; i <= sqrt(n); i++) { if (n % i == 0) { return false; } } return true; } bool is_super_prime(int n) { while (n > 0) { if (!is_prime(n)) { return false; } n /= 10; } return true; } int main() { int n = 3; int num = pow(10, n); for (int i = 2; i < num; i++) { if (is_super_prime(i)) { printf("%d\n", i); } } return 0;}
这段代码也是用C语言实现输出超级质数的功能,只不过它是通过检查一个数的每个位数是否都是质数来判断这个数是否是超级质数。具体实现如下:
```c
#include <stdio.h>
#include <stdbool.h>
#include <math.h>
bool is_prime(int n) {
if (n <= 1) {
return false;
}
for (int i = 2; i <= sqrt(n); i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
bool is_super_prime(int n) {
while (n > 0) {
if (!is_prime(n % 10)) {
return false;
}
n /= 10;
}
return true;
}
int main() {
int n = 3;
int num = pow(10, n);
for (int i = 2; i < num; i++) {
if (is_super_prime(i)) {
printf("%d\n", i);
}
}
return 0;
}
```
这个程序会输出从2到999之间的所有超级质数。这里的 `is_super_prime()` 函数会检查一个数的每个位数是否都是质数,如果是则返回 `true`,否则返回 `false`。程序通过循环遍历从2到999之间的所有数字,对每个数字调用 `is_super_prime()` 函数进行判断,如果是超级质数则输出。
#include <stdio.h> #include <stdbool.h> #include <math.h> void fun(int m, int n) { bool prime[n + 1]; memset(prime, true, sizeof(prime)); // 初始化全部为true for (int i = 2; i <= sqrt(n); i++) { if (prime[i]) { for (int j = i * 2; j <= n; j += i) { prime[j] = false; // 标记i的倍数为非素数 } } } // 输出[m,n]之间的素数 for (int i = m; i <= n; i++) { if (prime[i]) { printf("%d ", i); } } } int main() { int m = 2, n = 100; fun(m, n); return 0; }
这段代码实现了一个函数`fun(m,n)`,可以输出`[m,n]`之间的所有素数。具体实现过程和思路在之前的回答中已经讲解过了。
在`main()`函数中,定义了`m`和`n`的值分别为`2`和`100`,然后调用了`fun(m,n)`函数来输出`[2,100]`之间的素数。
如果需要输出其他范围内的素数,只需要修改`m`和`n`的值即可。
阅读全文