各位大神帮小弟我看看这程序生什么病了。
各位大神帮我看看这程序生什么病了。。
用数组存素数的。程序运行不了。各位大神帮帮忙。。。
# include<stdio.h>
# define sw 100
int sum(int x,int a[],int w);
int main(void){
int a[sw] = {2};
int x = 3;
int j = 1;
int ci = 1;
int i = 0;
while(ci<sw){
if(sum(x,a,sw)){
a[ci++] = x;
}
x++;
}
for(i=0;i<sw;i++){
printf("%d",a[i]);
if((i+1)%5){
printf("\t");
}
else{
printf("\n");
}
}
}
int sum(int x,int a[],int w){
int ret = 1;
int i;
for(i=0;i<w;i++){
if(x%a[i]==0){
ret = 0;
break;
}
}
return ret;
}

------解决思路----------------------
修改如下:
用数组存素数的。程序运行不了。各位大神帮帮忙。。。
# include<stdio.h>
# define sw 100
int sum(int x,int a[],int w);
int main(void){
int a[sw] = {2};
int x = 3;
int j = 1;
int ci = 1;
int i = 0;
while(ci<sw){
if(sum(x,a,sw)){
a[ci++] = x;
}
x++;
}
for(i=0;i<sw;i++){
printf("%d",a[i]);
if((i+1)%5){
printf("\t");
}
else{
printf("\n");
}
}
}
int sum(int x,int a[],int w){
int ret = 1;
int i;
for(i=0;i<w;i++){
if(x%a[i]==0){
ret = 0;
break;
}
}
return ret;
}
------解决思路----------------------
修改如下:
#include<stdio.h>
#define N 100
int a[N];
int i, ci, sw;
int x;
int prime(int x, int a[], int w);
int main(void) {
a[0] = 2;
x = 3;
ci = 1;
while (ci < N) {
if (prime(x, a, sw)) {
a[ci++] = x;
sw++;
}
x++;
}
for (i = 0; i < N; i++) {
printf("%d", a[i]);
if ((i + 1) % 5) {
printf("\t");
}
else {
printf("\n");
}
}
return 0;
}
int prime(int x, int a[], int w) {
int ret = 1;
int i;
for (i = 0; i < w; i++) {
if (x % a[i] == 0) {
ret = 0;
break;
}
}
return ret;
}