#include<iostream>
#include<iomanip>
#include<math.h>
using namespace std;
void main()
{
int i,j,k=2;
cout<<setw(8)<<2<<setw(8)<<3;
for(i=2;i<=300;i++)
for(j=2;j<sqrt(i);j++)
{
if(i%j==0)break;
if(j>sqrt(i))
{
cout<<setw(8)<<i;
k++;
if(k%5==0)cout<<'\n';
}
}
cout<<'\n';
}
VS2010编译后显示错误:
1、error C2668: “sqrt”: 对重载函数的调用不明确 e:\c++\1\1\1.cpp
2、error C2668: “sqrt”: 对重载函数的调用不明确 e:\c++\1\1\1.cpp
3、IntelliSense: 有多个 重载函数 "sqrt" 实例与参数列表匹配: e:\c++\1\1\1.cpp
4、IntelliSense: 有多个 重载函数 "sqrt" 实例与参数列表匹配: e:\c++\1\1\1.cpp
7 个解决方案
#1
#include<math.h> 是不是应该写成#include<math>
#2
把 i 强制转换下
#3
#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;
void main()
{
int i,j,k=2;
cout<<setw(8)<<2<<setw(8)<<3;
for(i=2;i<=300;i++)
for(j=2;j<sqrt((double)i);j++)
{
if(i%j==0)
break;
if(j>sqrt((double)i))
{
cout<<setw(8)<<i;
k++;
if(k%5==0)cout<<'\n';
}
}
cout<<'\n';
}
#4
VS2010 提供了精确地类型配匹配需要强制转换 sqrt只是针对float和double以及long double重载了
#5
#include<cmath>
#6
将i转为long型
#7
ok
需要强制转换
需要强制转换
#1
#include<math.h> 是不是应该写成#include<math>
#2
把 i 强制转换下
#3
#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;
void main()
{
int i,j,k=2;
cout<<setw(8)<<2<<setw(8)<<3;
for(i=2;i<=300;i++)
for(j=2;j<sqrt((double)i);j++)
{
if(i%j==0)
break;
if(j>sqrt((double)i))
{
cout<<setw(8)<<i;
k++;
if(k%5==0)cout<<'\n';
}
}
cout<<'\n';
}
#4
VS2010 提供了精确地类型配匹配需要强制转换 sqrt只是针对float和double以及long double重载了
#5
#include<cmath>
#6
将i转为long型
#7
ok
需要强制转换
需要强制转换