none
For all, 100, 200 primes(找100··200的全部素数) RRS feed

  • 问题

  • #include<iostream>
    #include<cmath>
    #include<iomanip>
    using namespace std;
    int main()
    {
     int m,k,i,n=0;
     bool prime;
     for(m=101;m<=200;m=m+2)
     {prime=true;
     k=int(sqrt(m));
     for(i=2;i<=k;i++)
      if(m%i==0)
      {prime=false;
     break;
     }
    if(prime)
    {cout<<setw(5)<<m;
    n=n+1;
    }
    if(n%10==0) cout<<endl;
     }
     cout <<endl;
     system("pause");
     return 0;
    }                    //为什么运行不了Why don't run
    2010年10月15日 5:01

答案

  • 您好,

     k=int(sqrt(m));

    问题应该出在这里,因为在cmath里有多个sqrt()方法的重载,所以编译器无法判断你使用了哪个。

    可以改为:k=int(sqrtl(m));

    希望对您有所帮助。


    Daoping Liu - MSFT
    2010年10月18日 5:35
    版主
  • 您好,

    sqrt 与 sqrtl 的区别是什么?

    在cmath里,sqrt有2个重载版本,所以有3个版本的sqrt,分别是:

    double sqrt(double x);

    float sqrt(float x);

    long double sqrt(long double x);

    因为你的参数m是个变量,所以编译器不知道你使用了哪个版本。

    而sqrtl则是 long double sqrtl(long double x).

    其实还有一个float sqrtf(float x),所以你也可以改为 k=int(sqrtf(m));


    Daoping Liu - MSFT
    • 已标记为答案 phibiya 2010年10月26日 14:46
    2010年10月26日 2:21
    版主

全部回复

  • 不能运行是指什么?
    麻烦把正确答案设为解答。
    2010年10月15日 7:11
    版主
  • 您好,

     k=int(sqrt(m));

    问题应该出在这里,因为在cmath里有多个sqrt()方法的重载,所以编译器无法判断你使用了哪个。

    可以改为:k=int(sqrtl(m));

    希望对您有所帮助。


    Daoping Liu - MSFT
    2010年10月18日 5:35
    版主
  • Daoping Liu,你好!我想向你请教一个问题,想知道怎么可以和你联系?可否告诉我一下。我的msn账号是:haust_wang@live.cn
    根爷
    2010年10月18日 9:04
  • 可以啦 k=int(sqrt(m));终于不出现红色波浪形了,十分感谢你的热心帮助
    2010年10月25日 13:35
  • 可以啦 k=int(sqrt(m));终于不出现红色波浪形了,十分感谢你的热心帮助.
    小弟不才,可否再问一下,sqrt 与 sqrtl 的区别是什么?
    2010年10月25日 14:44
  • 行啦就是改为

    可以改为:k=int(sqrtl(m));

    2010年10月25日 14:46
  • 您好,

    sqrt 与 sqrtl 的区别是什么?

    在cmath里,sqrt有2个重载版本,所以有3个版本的sqrt,分别是:

    double sqrt(double x);

    float sqrt(float x);

    long double sqrt(long double x);

    因为你的参数m是个变量,所以编译器不知道你使用了哪个版本。

    而sqrtl则是 long double sqrtl(long double x).

    其实还有一个float sqrtf(float x),所以你也可以改为 k=int(sqrtf(m));


    Daoping Liu - MSFT
    • 已标记为答案 phibiya 2010年10月26日 14:46
    2010年10月26日 2:21
    版主
  • 哦哦,原来是这样!实在是太感谢啦
    2010年10月26日 14:46