#include <stdio.h> #include <math.h> int m, n = 0; int main() { int i; void a(); for (i = 2; i <= m; i++) if (n % i == 0) break; if (i > m) printf("%d是", n); else printf("%d不是", n); printf("%d", i); return 0; } void a() { printf("shuru"); scanf("%d", & n); m = sqrt(n); }优化一下
时间: 2023-12-10 22:06:14 浏览: 142
当然,我可以帮助你优化代码。下面是经过优化的代码:
```c
#include <stdio.h>
#include <math.h>
int isPrime(int num) {
if (num < 2) {
return 0;
}
int sqrtNum = sqrt(num);
for (int i = 2; i <= sqrtNum; i++) {
if (num % i == 0) {
return 0;
}
}
return 1;
}
int main() {
int n;
printf("请输入一个整数:");
scanf("%d", &n);
if (isPrime(n)) {
printf("%d是素数\n", n);
} else {
printf("%d不是素数\n", n);
}
return 0;
}
```
在这个优化后的代码中,我将原先的全局变量m和n转为了局部变量,因为它们只在main函数中使用。此外,我还将计算是否为素数的逻辑封装成了一个名为isPrime的函数。这个函数会返回1(真)或者0(假),以表示给定的数是否为素数。最后,使用该函数进行判断,并输出结果。
希望这个优化后的代码能满足你的要求。如果有任何疑问,请随时提出。
相关问题
#include<stdio.h>#include<stdlib.h>#include<math.h>void main(){ int i; int n; for(i=100;i<=200;i++) { if(i%3==0&&i%7==0) { if(n%8==0)printf("\n"); printf("%6d",i); n++; } } printf("\nNumbers are:%d\n",n);}修改
修改后的代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main() {
int i, n = 0;
for (i = 100; i <= 200; i++) {
if (i % 3 == 0 && i % 7 == 0) {
if (n % 8 == 0) {
printf("\n");
}
printf("%6d", i);
n++;
}
}
printf("\nNumbers are: %d\n", n);
return 0;
}
```
修改的内容包括:
1. `void main()` 改为 `int main()`,因为 `main` 函数应该有一个返回值。
2. 在 printf 函数中添加空格,使输出更加美观。
3. 在程序结尾添加 `return 0;`,表示程序正常结束。
#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`的值即可。
阅读全文