Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
VLAD1M1R
0 / 0 / 0
Регистрация: 04.11.2009
Сообщений: 55
#1

Программа с простыми числами - C++

21.01.2010, 12:43. Просмотров 907. Ответов 6
Метки нет (Все метки)

Здравствуйте, мне дали такое условие: "В файле записаны числа. С клавиатуры вводится число. Требуется вывести на экран все простые числа, не содержащие этой цифры (которую вводим с клавиатуры). Отсортировать их по сумме цифр." Буду очень благодарен, если поможете написать программу..

Добавлено через 20 минут
У меня есть похожая программа, только с буквами ("Есть файл, в нем слова. с клавы вводится буква, вывести на экран все слова в которой никакая буква кроме введенной в клавы не встречается, слова отосрт. по длине) Если это поможет, то могу выложить...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.01.2010, 12:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Программа с простыми числами (C++):

Программа на С с простыми числами - C++
Пользователь вводит 2 границы диапазона в произвольном порядке. Вывести на экран все простые числа из этого диапазона.

Программа с простыми числами - C++
Помогите кому не сложно написать программу: Задача: Написать программу, которая находит и выводит на экран N первых простых чисел (число...

Найти все натуральные числа меньше N, которые одновременно являются числами Фибоначчи и простыми числами. - C++
Дано натуральное число N. Найти все натуральные числа меньше N, которые одновременно являются числами Фибоначчи и простыми числами. ...

Задача с простыми числами - C++
составить программу нахождения и печати всех простых чисел,меньших заданного числа N.Подсчитать количество простых чисел.Простым называется...

Заполнить массив n*m простыми числами - C++
Здрасьте! Помогите, пожалуйста, с решением задачи :impossible: "Двумерный массив размерности m*n заполнен простыми числами. Найти номера...

Заполнить массив простыми числами по возрастанию - C++
Нужно заполнить массив из n элементов простыми числами по возрастанию #include<iostream> using namespace std; int main() ...

6
Bloodykeeper
This party getting crazy!
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
21.01.2010, 12:47 #2
выложи, всё что есть то всегда поможет
0
VLAD1M1R
0 / 0 / 0
Регистрация: 04.11.2009
Сообщений: 55
21.01.2010, 12:50  [ТС] #3
хорошо, через пару минут скину
0
Day
1158 / 963 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
21.01.2010, 13:03 #4
Ежели ты умеешь работать с буквами, то остается только вместо слов сделать текстовое представление простых чисел. Однако здесь загвоздка. Простых чисел довольно много.
Даже очень много. Еще дядечка Эвклид доказал, что их бесконечно много. Поэтому приходится
слегка упростить задачу. Берем первые N простых чисел.
Принципиальная часть кода будет выглядеть так:
Код
const int N = 1000;
N[0] = 2;
k = 1;
for(j=3, k=1; k<1000; j+=2) {
    for(i=1; i<k; i++) {
       if ((j%N[i])==0) break;  // Число j оказалось не простым
    }
    if (i==k) { // j так ни на что не  разделилось
       N[k++] = j; 
    }
}
// Алгоритм не самый оптимальный, но должен работать
// Перевод числа в строчку делается так
  char s[100];
  sprintf(s, "%d", N[i]);
Не проверял. Возможны описки
0
VLAD1M1R
0 / 0 / 0
Регистрация: 04.11.2009
Сообщений: 55
21.01.2010, 13:14  [ТС] #5
насчет простых чисел: в задании имеется ввиду, что нужно вывести все простые числа из файла (т.е. те, которые я сам прописал в txt, как я понял) У меня есть множество чисел в файле. Я ввожу с клавы число, а затем нужно чтобы на экране появились все простые числа, которые не содержат той цифры, что я ввел с клавы. (как то так)
0
Day
1158 / 963 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
21.01.2010, 13:20 #6
Пока отвечал, забыл, что числа читаются из файла.
Тогда надо просто проверить их на простоту
Код
  M - число
  int k = sqrt(M);
  for(j=2; j<=k; j++)
    if ((M%j)==0) break;
  if (j==k) // число M простое
  else       // не простое
1
VLAD1M1R
0 / 0 / 0
Регистрация: 04.11.2009
Сообщений: 55
21.01.2010, 13:36  [ТС] #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include "stdafx.h"
#include <math.h>
#include <fstream>
#include <iostream>
#include <string.h>
using namespace std;
int repeat(char *a, char *b)
{
    int flag=0;
    for (int i=0;i<strlen(a);i++)
        for (int r=i+1;r<strlen(a);r++)
        {
            if (a[i]==a[r])
                if (a[i]!=b[0])
                {
                    return 0;
                    break;
                }
        }
    return 1;
 
}
int _tmain(int argc, _TCHAR* argv[])
{
    int i=0;
    char a[1], s[100][100],q[100],t[100];
    fstream f("my.txt");
    cin>>a;
    while (!f.eof())
    {
        f>>q;
        if (repeat(q,a))
            strcpy_s(s[i++],q);
    }
    for (int j=0;j<i;j++)
        for (int k=0;k<i-1;k++)
            if (strlen(s[k])>strlen(s[k+1]))
                {
                    strcpy_s(t,s[k]);
                    strcpy_s(s[k],s[k+1]);
                    strcpy_s(s[k+1],t);
                }
    for (int r=0;r<i;r++)
        cout<<s[r]<<" ";
 
    return 0;
}
Вот условие этой задачи:
Есть файл, в файле слова,с клавы вводится буква,вывести на экран все слова в которой никакая буква
кроме введенной с клавы не встречается,слова отсортировать по длине.

Добавлено через 3 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include "stdafx.h"
#include <iostream>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    int a, count=0, mas[1000], mas2[1000], N=0, sum=0;
    cin>>a;
    for (int i=0; i<1000; i++)
    {
        count=0;
        for (int j=1; j<=i; j++)
            if (i%j==0)
                count++;
        if (count==a)
        {
            mas2[N]=mas[N]=i;
            N++;
        }
    }
 
    for (int p=0; p<N; p++)
        for (int schet=0; schet<N-1; schet++)
        {
            sum=0;
            int sum2=0;
            while (mas[schet]>0)
            {
                sum=sum+mas[schet]%10;
                mas[schet]=mas[schet]/10;
            }
            while (mas[schet+1]>0)
            {
                sum2=sum2+mas[schet+1]%10;
                mas[schet+1]=mas[schet+1]/10;
            }
            if (sum2<sum)
            {
                int t=mas2[schet];
                mas2[schet]=mas2[schet+1];
                mas2[schet+1]=t;
            }
            mas[schet]=mas2[schet]; mas[schet+1]=mas2[schet+1];
        }
    for (int k=0; k<N; k++)
        cout<<mas2[k]<<" ";
    return 0;
}
Выкладываю еще одну программу, в надежде что она хоть чем то поможет.. Условие: "Количество делителей равно числу введенному с клавы." Тут присутствует сортировка по сумме цифр (в моей программе это тоже требуется

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include "stdafx.h"
#include <iostream>
#include <math.h>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    
    for (int a=1; a<2000; a++)
    {   int flag=0;
        for (int i=2; i<a; i++)
        {
            if (a%i==0)
            {
                flag=1;
                break;
            }
        }
    
    if (flag==0)
        cout<<a<<" ";
    }                   
    return 0;
}
А это все простые числа до 2000 (на всякий случай)

Добавлено через 2 минуты
Буду очень благодарен, если поможете объединить все это в полноценную, нужную мне программу. Надеюсь, то что я выложил, как то поможет..
з.ы. Времени у меня осталось всего пару часов...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.01.2010, 13:36
Привет! Вот еще темы с ответами:

Создать двусвязный список с простыми числами - C++
Помогите, пожалуйста, с лабораторной. Задача: Создать двусвязный список с простыми числами. Числа заполнить по следующему алгоритму:...

Заполнить массив первыми 100 простыми числами - C++
Объявите одномерный целочисленный массив, в котором не более 100 элементов. Выполните генерацию массива первыми 100 простыми числами....

Заполнить массив размером в 1000 простыми числами - C++
Здравствуйте! Нужна помощь в решении двух похожих задач: 1. Найти все простые числа в диапазоне от 2 до 1000 и вывести их на...

Заполнить массив десятью первыми простыми числами - C++
Заполнить массив десятью первыми простыми числами


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Yandex
Объявления
21.01.2010, 13:36
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru