Этот код работает отлично до 100000, но если вы введете 1000000, он начнет выдавать ошибку C++ 0xC0000094: Integer division by zero
. Я уверен, что это что-то о плавающих точках. Я пробовал все комбинации (/ fp: exact), (/ fp: strict), (/ fp: except) и (/ fp: except-), но не имел положительного результата.C++ 0xC0000094: целочисленное деление на ноль
#include "stdafx.h"
#include "time.h"
#include "math.h"
#include "iostream"
#define unlikely(x)(x)
int main()
{
using namespace std;
begin:
int k;
cout<<"Please enter the nth prime you want: ";
cin>>k;
int cloc=clock();
int*p;p=new int [k];
int i,j,v,n=0;
for(p[0]=2,i=3;n<k-1;i+=2)
for(j=1;unlikely((v=p[j],pow(v,2)>i))?!(p[++n]=i):(i%v);++j);
cout <<"The "<<k<<"th prime is "<<p[n]<<"\nIt took me "<<clock()-cloc<<" milliseconds to find your prime.\n";
goto begin;
}
Серьезно? !!! Можете ли вы отформатировать свой код, чтобы он был, по крайней мере, читабельным? –
Деление на 0 приведет к бесконечным результатам. т. е. вы не можете разделить число на 0. (http://en.wikipedia.org/wiki/Division_by_zero) – MAA
Извините, так я хранил его в консоли. Надеюсь, теперь это становится яснее. @Mylleranton Операция не имеет ничего общего с делением чего-то на ноль. – Flashbond