/求100以內全部素數,每行輸出10個,要求定義和調用函數prime(m)判斷是否爲素數,是返回·1,不是返回0/
錯誤1:while與if區別:if執行一次後跳出循環,while判斷爲真後執行後面語句,執行完後繼續回繼續判定,直到爲假爲止。
錯誤2:prime()函數,for語句下加了括號循環,錯誤原因:若爲0直接跳出,不會爲1;若能執行下一條語句就一定是素數
#include<stdio.h>
#include<math.h>
int main(void)
{
int count,m;
int prime(int m);
count=0;
for(m=2;m<=100;m++)
{
if(prime(m)!=0)//錯誤1
{
printf("%6d",m);
count++;
if(count%10==0)
printf("\n");
}
}
printf("\n");
}
int prime(int m)
{
int n,i;
if(m==1)return 0;
n=sqrt(m);
for(i=2;i<=n;i++)
if(m%i==0)
{
return 0;//若m不是素數,函數立即返回,並回送結果0,若能夠正確執行到最後一句,就一定是素數,返回1
//錯誤原因:for語句加上了括號
}
return 1;
}