以下程序求100~200之内的素数。请填空。 #include<math.h> #include<stdio.h> void sushu(int m); void main() { int m; for (m=101;m<=200;m++) —— } void sushu(int m) {int k,i; k=sqrt(m); for(i=2;i<=k;i++) if(i>=k+1) printf("%4d",m); }
时间: 2023-12-08 18:06:19 浏览: 132
以下是填空的代码:
```c
#include <math.h>
#include <stdio.h>
void sushu(int m);
void main() {
int m;
for (m = 101; m <= 200; m++) {
sushu(m);
}
}
void sushu(int m) {
int k, i;
k = sqrt(m);
for (i = 2; i <= k; i++) {
if (m % i == 0) {
break;
}
}
if (i >= k + 1) {
printf("%4d", m);
}
}
```
需要注意的是:
1. 函数`sushu`中的判断条件需要改为判断`m`是否能被`i`整除;
2. 最后的输出语句需要放在判断语句中,只有当`m`是素数时才输出。
相关问题
#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); }优化一下
当然,我可以帮助你优化代码。下面是经过优化的代码:
```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<math.h> int isPrime(int n) { int i,s=0; for(i=1;i<=n;i++) { if(n%i==0) s=s+i; } if(s-1==n) return 1; else return 0; } int main() { int n; scanf("%d",&n); int a=1; while(EOF) { a++; if(isPrime(a)==1&&isPrime(n-a)==1&&a<=n-a) break; } printf("%d %d\n",a,n-a); return 0; }
这是一段 C 语言代码,实现了一个简单的功能:输入一个数 n,找到两个素数 a 和 b,使得 a+b=n,且 a<=b。其中 isPrime 函数用于判断一个数是否为素数。具体来说,该函数对于输入的数 n,依次判断 1 到 n 是否为 n 的因子,如果是,则将其加起来,最终判断 s-1 是否等于 n,如果是,则说明 n 是素数,返回 1,否则返回 0。主函数则通过循环不断增加 a,直到找到符合条件的 a 和 b,然后输出即可。注意,该代码中的 while(EOF) 是一个死循环,应该改为 while(1) 才能正常运行。
阅读全文