错误:'浮动'之前的预期表达式

Jin*_*ong 3 c

我想找到100内的所有素数.这是我的代码.

// Find all the prime number within 100.
#include<stdio.h>
#include<math.h>
#include<stdbool.h>
int main() {
   int i,n;
   int j = 0;
   for ( n = 2; n <= 100; ++n) {
      bool isPrime = true;
      for (i = 2; i <= sqrt(float(n)); ++i) {
         if(n % i == 0) {
            isPrime = false;  
            break;
         }
      }
      if(isPrime) {
         ++j;
         printf("%d is a prime number\n",n);
      }
  }
  printf("The total number of prime number within 100 is %d\n",j);
  return 0;
Run Code Online (Sandbox Code Playgroud)

}

编译时,有一个错误.

prime.c:14:8: error: expected expression before ‘float’
m = float(n);
    ^
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙解决这个问题吗?谢谢.

Pau*_*l R 9

你在使用时使用了错误的语法(你使用的是C++的许多样式之一,但对于C只有一种方式).更改:

sqrt(float(n))
Run Code Online (Sandbox Code Playgroud)

sqrt((float)n)
Run Code Online (Sandbox Code Playgroud)

但请注意,这sqrt需要a double,严格来说,这应该是:

sqrt((double)n)
Run Code Online (Sandbox Code Playgroud)

另请注意,强制转换不是必需的,您只需编写:

sqrt(n)
Run Code Online (Sandbox Code Playgroud)