拜託好新的大大幫幫我
我在電腦餵值值給他都沒錯
丟上去他說錯了 以下是程式碼跟他顯示的錯誤
與正確輸出不相符(line:21)
您的答案為: 非質數
正確答案為: 質數
#include <stdio.h>
#include <math.h>
int a=0,i=0,temp=0,decision_prime=0,float_to_int=0; //a為抓取的值 temp為取%後的餘數 decision_prime=0為一個計數器用來判別是否為質數
double s=0; //float_to_int 為浮點數轉整數 也就是取下高斯
int main()
{
while(scanf("%d",&a)!=EOF) //抓值直到沒資料
{
s=sqrt(a); //把a開根號 其為一個浮點數
float_to_int=s; // 把上面的浮點數變成整數 也就是取下高斯之意思
for(i=2;i<=float_to_int;i++) //開始比較 從2一直到小於根號a取高斯之值 看他是否為質數
{
temp=a%i; //取餘數
if(temp==0) //利用餘數等於0可知他被整除
{
printf("非質數\n");
break; //早到有一個數可整除他即可 代表他不是質數 跳開迴圈 去抓下一個數
}
if(temp!=0) //沒整除
decision_prime++; //紀錄起來沒整除之個數
if(decision_prime== float_to_int-1) // 如果小於根號a取下高斯之值 都無法整除a a就是質數
printf("質數\n");
}
decision_prime=0; //歸0去抓下一個數
}
return 0;
}
沒註解的程式碼
#include <stdio.h>
#include <math.h>
int a=0,i=0,temp=0,decision_prime=0,float_to_int=0;
double s=0;
int main()
{
while(scanf("%d",&a)!=EOF)
{
s=sqrt(a);
float_to_int=s;
for(i=2;i<=float_to_int;i++)
{
temp=a%i;
if(temp==0)
{
printf("非質數\n");
break;
}
if(temp!=0)
decision_prime++;
if(decision_prime== float_to_int-1)
printf("質數\n");
}
decision_prime=0;
}
return 0;
}