このコードは、私はgccの上でこのコードをビルドする500と1000エラー:「int型の前に期待表現
との間にプライマー番号を示すことであるが、それはエラーを返す6.2.1が、私は、Visual Studio上で、それをビルドするとき2015年は成功です。
#include <stdio.h>
#include <math.h>
int primer_number(int a)
{
int i, m = 0;
for (i = 2; i<int(sqrt(double(a))); i++)
{
if (a%i == 0) return m = 1;
}
return m;
}
int main(void)
{
int i;
for (i = 500; i <= 1000; i++)
{
if (primer_number(i) == 0) printf("%d\n", i);
}
}
ここでスクリーンショットgcc 6.2.1
これはあなたの問題です: 'int(sqrt(double(a)))'。 '(int)sqrt((double)a)' – 599644
あるケース(Visual C++)ではC++、もう1つ(gcc)ではCとしてコンパイルされているようです。 Cで有効でないC++のキャストを使用しているために失敗します。 –
BTWでは、 'sqrt'は1回だけ(ループの前に)計算する必要があります。あるいは 'i * i <= a'でテストしてください。 'bool primer_number(int a)'を –