http://pastebin.com/GRe0n3aD
выдает только 125 250 и 500
Другие языки программирования и технологии
Правильно составлена прога? C++
У меня она вообще сразу вываливается в эксепшен на i%j при i=0 и j=0. Делить на ноль нельзя, даже по модулю) .
Во вторых cout<<endl; явно следовало бы присоединить к предыдущей строчке или объединив фигурными скобками или так cout<<j<<endl; иначе выдаёт много пустых строк. 125 250 и 500 у тебя скорее всего выдаёт т. к. это последние цифры которые выдаёт программа, а остальное "съедается" пустыми строками. Так там цифр выдаёт много больше.
В четвёртых сам алгоритм нахождения простых чисел неправильный. Я хз откуда вы его взяли, но на нахождение простых чисел он не похож.
Вот ваш код с исправлениями: http://pastebin.com/GpvRMCV9
Во вторых cout<<endl; явно следовало бы присоединить к предыдущей строчке или объединив фигурными скобками или так cout<<j<<endl; иначе выдаёт много пустых строк. 125 250 и 500 у тебя скорее всего выдаёт т. к. это последние цифры которые выдаёт программа, а остальное "съедается" пустыми строками. Так там цифр выдаёт много больше.
В четвёртых сам алгоритм нахождения простых чисел неправильный. Я хз откуда вы его взяли, но на нахождение простых чисел он не похож.
Вот ваш код с исправлениями: http://pastebin.com/GpvRMCV9
#include <iostream>
#include <iomanip>
bool is_prime(unsigned long);
int main() {
for (unsigned long i = 0; i <= 500; ++i) if (is_prime(i)) std::cout << std::setw(5) << i;
std::cout << std::endl;
std::cin.get();
}
bool is_prime(unsigned long number) {
bool prime;
if (number == 2 || number == 3 || number == 5) prime = true;
else if (~number & 1 || number < 2 || 0 == number % 3 || 0 == number % 5) prime = false;
else {
unsigned long n;
for (n = 3; n * n <= number && number % n; n += 2);
prime = n * n > number? true : false;
}
return prime;
}
#include <iomanip>
bool is_prime(unsigned long);
int main() {
for (unsigned long i = 0; i <= 500; ++i) if (is_prime(i)) std::cout << std::setw(5) << i;
std::cout << std::endl;
std::cin.get();
}
bool is_prime(unsigned long number) {
bool prime;
if (number == 2 || number == 3 || number == 5) prime = true;
else if (~number & 1 || number < 2 || 0 == number % 3 || 0 == number % 5) prime = false;
else {
unsigned long n;
for (n = 3; n * n <= number && number % n; n += 2);
prime = n * n > number? true : false;
}
return prime;
}
Если брать перебор почти всего, то можно примерно так (изврат, но можно) :
---------
int a[501];
for(int i=3;i<500 ;i+=2)
for(int j=3,a[i]=0,int jmax=(int)(sqrt(i)+1); j<=jmax;j+=2)a[i]+=!i%j;
//простые нечетны и не надо проверять четные (0,1,2 -можно определить до цикла -там зависит от того, что считать простыми)
// Не делить на 0 и не считать делящиеся на 1. и не проверять деление на четное ибо простое уже заведомо нечётные
// не гнать дальше корня ибо бессмысленно
// вести набор ненуля туда где делится
for(int i=0;i<=500 ;i++)if(!a[i])cout << i <<endl;
//вывод неделившихся (там остался ноль)
----------
(PS после редактирования: Чертов интерфейс - приходится больше следить за наведенными ошибками чем за опечатками в коде. вроде правильно теперь а как сохранит непредсказуемо)
---------
int a[501];
for(int i=3;i<500 ;i+=2)
for(int j=3,a[i]=0,int jmax=(int)(sqrt(i)+1); j<=jmax;j+=2)a[i]+=!i%j;
//простые нечетны и не надо проверять четные (0,1,2 -можно определить до цикла -там зависит от того, что считать простыми)
// Не делить на 0 и не считать делящиеся на 1. и не проверять деление на четное ибо простое уже заведомо нечётные
// не гнать дальше корня ибо бессмысленно
// вести набор ненуля туда где делится
for(int i=0;i<=500 ;i++)if(!a[i])cout << i <<endl;
//вывод неделившихся (там остался ноль)
----------
(PS после редактирования: Чертов интерфейс - приходится больше следить за наведенными ошибками чем за опечатками в коде. вроде правильно теперь а как сохранит непредсказуемо)
Похожие вопросы
- Не работает прога c++ в чем здесь гвоздь?!
- помогите составить прогу в паскале
- Помогите почему не работает прога C#
- Помогите составить прогу в паскале: А в степени N, чтобы высчитывала ответ при вводе числа и её степени.Заранее спасиб
- помогите составить прогу
- Как правильно составить рекурентную формулу?)
- Как правильно составить robots.txt?Куда его разместить? Если мне не надо индексировать страницу регистрации и еще кое что
- Информатика. Программирование. Обработка массивов данных. Помогите составить алгоритм и прог. код к нему.
- Как правильно создать и использовать radiobutton-ы на win api c++ ?Можно ли из программы узнать версию Windows ?
- помогите составить таблицы истиности -А -> (B + C); (A B) * C; -A + -B + C; - (A + B) * C ; A * B _+ C; A B