編程輸出1000以內的所有素數,要求每行輸出8個數。#include<stdio.h>#include<math.h>int prime(int);void main(){int i,m;int j=0;for(i=2;i<=997;i++){m=prime(i);if(m==1)printf("%4d",i);j++;if(j%8==0)printf("\n);}}int prime(int n){int a,k;for(a=2;a<=sqrt(n);a++){k=n%a;if(k==0)return(0);elsereturn(1);}}謝謝,運行結果不對,會出現(xiàn)2 ,3,5,7,9;11,13,15,17,19;21,23,……是每隔兩個數輸出的
3 回答

素胚勾勒不出你
TA貢獻1827條經驗 獲得超9個贊
int prime(int n)
{int a,k;
for(a=2;a<=sqrt(n);a++)
{k=n%a;
if(k==0)
return(0);
}
return(1);
}
改成這樣試試
你為什么要使用sqrt呢,為什么最多運行到他的平方根?
改成a<n試試

眼眸繁星
TA貢獻1873條經驗 獲得超9個贊
看著總體上沒什么大問題啊,報錯是在哪里?
一個滿8個換行的,漏掉引號了
還有一個sqrt是不是只接受double或者float的啊,加個sqrt((double)n)試試

慕田峪4524236
TA貢獻1875條經驗 獲得超5個贊
#include <stdio.h>
#include <math.h>
int main ()
{
int i ,k=0 ,m ;
for (m=2; m<=997; m=m+1)
{
for (i=2; i<=sqrt(m);i=i+1)
if (m%i==0) break ;
if (i>sqrt(m))
{
printf("%d " ,m);
k=k+1;
if(k%8==0) printf("\n");
}
}
printf("\n");
return 0;
}
//跟你寫的不一樣 ,你先看看我的再找找你的錯誤
添加回答
舉報
0/150
提交
取消