Если знаете, то подскажите, пожалуйста, что неправильно и что надо исправить?
Вот код:
#include <iostream>
#include <math.h>
using namespace std;
bool prime(double n)
{
double sqrt_of_n = sqrt(n);
int i;
for(i=2; i<sqrt_of_n; i++)
{
if((int)n%2==0) return false;
}
return true;
}
int main()
{
double number=1000000000;
for(;;)
{
number++;
if(prime(number))
{
cout << number << " is a prime number";
return 0;
}
}
}
Примечание:
Вроде бы все правильно, однако каждый раз программа выдает ответ:
1e+09 is a prime number
Примечание:
>> SKYDOS
Отзыв отправлен за спам!
Примечание:
>> katzyn
А с какими числами надо работать?
Примечание:
>> SKYDOS
Не нужна мне никакая програ, да к тому же замудреная, мне надо мою исправить.
Примечание:
if((int)n%2==0) return false;
Исправил на:
if((int)n%i==0) return false;
Все равно неправильно вычисляет.
Примечание:
Поменял тип данных на long, и все заработало!
Спасибо SKYDOS и katzyn
Примечание:
Задание:
найти первое простое число, начиная с миллиарда.
Примечание:
Программа выдает:
1000000007 is a prime number
Я думаю все правильно...
Проверьте кто-нибудь.
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.