为什么不是10个数就换行?请修改代码#include<stdio.h> int sushu(int n) { int i,count=1; for(i=2;i<n;i++) { if(n%i==0) count=0; } return count; } int main() { int N,i,count=0,s[900]; printf("please input N(100-1000):\n"); scanf("%d",&N); if(!(N>100&&N<1000))
时间: 2023-12-01 21:02:57 浏览: 73
你可以在输出每个素数后判断是否需要换行,代码如下:
```
#include<stdio.h>
int sushu(int n) {
int i,count=1;
for(i=2;i<n;i++) {
if(n%i==0)
count=0;
}
return count;
}
int main() {
int N,i,count=0,s[900];
printf("please input N(100-1000):\n");
scanf("%d",&N);
if(!(N>100&&N<1000))
return 0;
for(i=2;i<=N;i++) {
if(sushu(i)) {
s[count++]=i;
printf("%d ",i);
if(count%10==0) { // 每输出 10 个素数就换行
printf("\n");
}
}
}
return 0;
}
```
相关问题
以下程序求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); }
以下是填空的代码:
```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`是素数时才输出。
程序改错 题目:以下程序求100-200之内的素数。 #include <stdio.h> #include <math.h> void sushu(int m) { int k; int i: for(i=2;i<=k;i++) if(i>=k+1) printf("%4d",m); } void main(void) { int m; for(m=101;m<=200;m++) ; }
以下是已改正的程序:
```c
#include <stdio.h>
#include <math.h>
void sushu(int m) {
int k = sqrt(m); // 计算m的平方根
int i;
for(i = 2; i <= k; i++) {
if(m % i == 0) {
return; // 如果能整除,说明不是素数,直接返回
}
}
printf("%4d", m); // 如果无法整除,说明是素数,输出
}
int main(void) {
int m;
for(m = 101; m <= 200; m++) {
sushu(m);
}
return 0;
}
```
主要修改如下:
1. 在 `sushu` 函数中,需要计算输入数 `m` 的平方根,以便后面判断是否为素数。
2. 在 `sushu` 函数中,需要在遍历过程中判断是否能被整除,如果能被整除则说明不是素数,直接返回即可。
3. 在 `main` 函数中,需要调用 `sushu` 函数,并且需要将 `void` 修改为 `int`,并且在函数末尾返回 `0`。
阅读全文