我是初學者,正在學習函數。以下是我寫的代碼,以查找給定的數字是否爲素數。但是,當我執行它時,我會看到對話框顯示「project.exe已停止工作」。我正在使用dev C++。我的代碼有問題嗎?查找給定數字是否爲素數的函數
#include<stdio.h>
int prime (int i);
int main()
{
int a,b;
scanf("%d",&a);
b=prime(a);
if (b==1)
printf("prime");
else
printf("not prime");
return 0;
}
int prime (int i)
{
int j=0;
for (j=0;j<=i;j++)
{
if (i%j==0)
break;
}
if (j==i)
return 1;
else
return 0;
}
第一次通過'j'循環時,'j'爲零。你不能以零分或取其餘部分。以'j = 2'開始循環,因爲除以1的餘數總是零。同樣對於上限:當'i == j'時'i%j'爲零。畢竟,素數可以被一個整除。 –
此外,如果您的終止條件是'j <= i',如果您在整個循環中運行而不會中斷''j'',那麼它將不等於'i'。最好立即返回0而不是跳出循環。 –
您應該將函數更改爲'bool prime(int i)'並返回'true'或'false'。命名它'is_prime'可能也是一個好主意,表明它有一個布爾結果。 – Lundin