找不到浮点异常
Unable to find the floating point exception
此代码显示浮点异常。我知道为什么会发生此错误,但我无法在此代码中找到错误。
#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
#define MAX 10005
vector<int> build_sieve() {
bool arr[MAX];
for(int i=2;i<=MAX-1;i++) {
arr[i]=true;
}
arr[0]=false;
arr[1]=false;
for(int i=2;i*i<=MAX-1;i++) {
if(arr[i]==true){
for(int j=i*i;j<=MAX-1;j=j+i) {
arr[j]=false;
}
}
}
vector<int> v;
for(int i=2;i<=MAX-1;i++) {
if(arr[i]==true){
v.push_back(i);
}
}
return v;
}
int main() {
// int t;
// cin>>t;
vector<int> v = build_sieve();
cout<<"Prime no.s"<<endl;
for(auto i = v.begin();i!=v.end();i++) {
cout<<*i<<" ";
}
int t;
cin>>t;
while(t--) {
int n,len;
cin>>n>>len;
ll arr[len];
for(int i=0;i<=len-1;i++) {
cin>>arr[i];
}
set<ll> s;
for(int i=0;v[i]<=n&&i<=100001;i++) {
for(int j=0;j<=len-1;j++) {
if((arr[j]%v[i])==0) {
s.insert(v[i]);
cout<<v[i]<<" "<<arr[j]/v[i]<<endl;
s.insert(arr[j]/v[i]);
}
}
}
cout<<s.size()<<endl;
}
}
某些系统报告整数除以零的浮点异常。 那么,您的代码如何获得其中之一呢? 除以 v[i]
(%
的模运算符是除法(。 v[i]
怎么可能为零? 因为您正在访问v
向量的末端。
当你构造v
时,你的素数列表,你只添加小于MAX
的数字,即10005。 但是,在 main
中的 for 循环中,您将自己限制为更大的索引 (i <= 100001
(,这是素数的计数,而不是素数。 一旦你过了v
的末尾,你就进入了未定义的行为,这最终会导致异常。
相关文章:
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 找不到QtResource文件中的文件
- VC++本机单元测试,找不到调试符号
- RegGetValue在当前用户下找不到名称
- 带有 -stdlib=libc++ 的 clang++ 9.0.1 找不到<optional>
- c++找不到具有相同哈希的无序集合元素
- 找不到以下加速库:boost_fiber
- 找不到 FLTK(缺少:FLTK_INCLUDE_DIR)
- 找不到浮点异常
- 食人魔异常(6:文件未找到异常):找不到'ogre.cfg'文件
- 声纳库贝分析在 Eclipse 中失败,由于找不到异常语言"cpp"在本地分析中抛出错误
- 找不到指定的过程.(HRESULT中出现异常:0x8007007F)
- 找不到异常源:cudaError_enum内存位置
- System.IO.FileNotFoundException未经处理消息=“找不到指定的模块.(HRESULT中的异常
- boost.log std::异常格式化程序找不到运算符<< 自己的命名空间中的重载
- 无法加载DLL.找不到指定的模块.(异常来自HRESULT: 0x8007007E)