#include
void main()
{
int j,k,i,N;
printf ("Введите число N ");
scanf("%d",&N);
for (i=2;i=N;i++)
k=0;
for (j=2;i-1;j++)
{
if (i % j == 0)
k=k+1;
if (k==0)
printf("Простых чисел до %d не сущетсвует",N);
}
printf ("Список простых чисел: %d ",i);
}
C/C++
Си. Цикл for. Что не так? Составить программу вывода на экран всех простых чисел не превосходящих введеннного числа N
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <locale.h>
bool is_prime(unsigned num) {
bool prime;
if (num <= 5 && (num <= 2 || num == 3 || num == 5)) prime = true;
else if (~num & 1 || 0 == num % 3 || 0 == num % 5) prime = false;
else {
unsigned n;
for (n = 3; n * n <= num && num % n; n += 2) { ; }
prime = n * n > num? true : false;
}
return prime;
}
int main(void) {
unsigned num;
setlocale(LC_CTYPE, "Russian");
printf("Введите целое положительное число: ");
scanf_s("%u", &num);
for (unsigned n = 2; n <= num; ++n) if (is_prime(n)) printf("%u ", n);
putchar('\n');
system("pause > nul");
return 0;
}
#include <stdlib.h>
#include <stdbool.h>
#include <locale.h>
bool is_prime(unsigned num) {
bool prime;
if (num <= 5 && (num <= 2 || num == 3 || num == 5)) prime = true;
else if (~num & 1 || 0 == num % 3 || 0 == num % 5) prime = false;
else {
unsigned n;
for (n = 3; n * n <= num && num % n; n += 2) { ; }
prime = n * n > num? true : false;
}
return prime;
}
int main(void) {
unsigned num;
setlocale(LC_CTYPE, "Russian");
printf("Введите целое положительное число: ");
scanf_s("%u", &num);
for (unsigned n = 2; n <= num; ++n) if (is_prime(n)) printf("%u ", n);
putchar('\n');
system("pause > nul");
return 0;
}
В заголовке цикла по i вместо условия i<=N e тебя стоит ПРИСВАИВАНИЕ i=N.
Сам же цикл по i состоит из ЕДИНСТВЕННОГО выражения: k=0;.
Цикл по j находится ПОСЛЕ цикла по i, а не внутри его.
Условие i-1 в заголовке цикла по j не имеет смысла и гарантирует, что цикл по j будет крутиться очень долго - пока значение j не станет равным 0 и произойдёт ошибка деления на 0.
Проверка k==0 находится в, мягко говоря, странном месте: сообщения "простых чисел не существует" ты будешь получать многократно - вперемешку с искомыми значениями простых чисел.
Перед выводом значения простого числа нет проверки, что число действительно простое. Потому, в зависимости от того, где ты поставишь конец цикла по i, будет вывод либо всех чисел (и простых и составных), либо будет выведено единственное значение N+1.
Думаю, для начала шести "не так" достаточно.
Сам же цикл по i состоит из ЕДИНСТВЕННОГО выражения: k=0;.
Цикл по j находится ПОСЛЕ цикла по i, а не внутри его.
Условие i-1 в заголовке цикла по j не имеет смысла и гарантирует, что цикл по j будет крутиться очень долго - пока значение j не станет равным 0 и произойдёт ошибка деления на 0.
Проверка k==0 находится в, мягко говоря, странном месте: сообщения "простых чисел не существует" ты будешь получать многократно - вперемешку с искомыми значениями простых чисел.
Перед выводом значения простого числа нет проверки, что число действительно простое. Потому, в зависимости от того, где ты поставишь конец цикла по i, будет вывод либо всех чисел (и простых и составных), либо будет выведено единственное значение N+1.
Думаю, для начала шести "не так" достаточно.
Мб условие должно быть i<=N? И, по-моему, где-то забыты {}
Станислав Костров
исправил, программа после ввода N просто ничего не выводит
Kostia Dzy
В некоторых языках нумерация с 1 идёт, а в более популярных (нормальных) языках с 0
Kostia Dzy
Если открываешь if, else, while, for и т. п., то нужно открывать {} и в них писать код, который выполняется внутри if, else, while, for и т. п
Похожие вопросы
- Вывести на экран n первых простых чисел, начиная с единицы. n вводится с клавиатуры.
- Написать программу, возвращающую значение N, если N - простое число
- Составьте программу удаления столбца, содержащего максимальный элемент матрицы A[N][N] НА ЯЗЫКЕ СИ
- В LINUX OS Написать программу, которая из командной строки получает целое число N и некоторый текст “Text”.
- На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
- Язык си Найти все делители натурального числа N и вывести их в порядке возрастания и убывания.
- Задача по Массивах С++ Дано натуральное число N...
- Программа на СИ. Циклы с постусловием и предусловием
- С++ Максимум трёх чисел Даны три целых числа. Найдите наибольшее из них (программа должна вывести ровно одно целое число
- C++ Выведите в порядке возрастания все простые числа на отрезке [l;r]. Оформите решение в виде функции bool
#include
void main()
{
int j,k,i,N;
k=0;
printf ("Введите число N ");
scanf("%d",&N);
for (i=2;i<=N;i++)
{
}
for (j=2;i;j++)
{
if (i % j == 0)
{
k=k+1;
printf ("Список простых чисел: %d ",i);
}
}
}
#include
void main()
{
int j,k,i,N;
printf ("Введите число N ");
scanf("%d",&N);
k=0;
for (i=2;i<=N;i++)
{
for (j=2;i-1;j++)
{
if (i % j == 0)
k=k+1;
}
}
if (k==0)
printf("Простых чисел до %d не сущетсвует",N);
else
printf ("Список простых чисел: %d ",i);
}
int flg = 1;
for (j = 2; j < i; j++) {
if (i % j == 0) { flg = 0; break; }
}
if (flg) { printf("%d",i); k += 1; }
}