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

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

Восстановить пароль Регистрация
 
VLAD1M1R
0 / 0 / 0
Регистрация: 04.11.2009
Сообщений: 55
21.01.2010, 12:43     Программа с простыми числами #1
Здравствуйте, мне дали такое условие: "В файле записаны числа. С клавиатуры вводится число. Требуется вывести на экран все простые числа, не содержащие этой цифры (которую вводим с клавиатуры). Отсортировать их по сумме цифр." Буду очень благодарен, если поможете написать программу..

Добавлено через 20 минут
У меня есть похожая программа, только с буквами ("Есть файл, в нем слова. с клавы вводится буква, вывести на экран все слова в которой никакая буква кроме введенной в клавы не встречается, слова отосрт. по длине) Если это поможет, то могу выложить...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Bloodykeeper
This party getting crazy!
 Аватар для Bloodykeeper
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
21.01.2010, 12:47     Программа с простыми числами #2
выложи, всё что есть то всегда поможет
VLAD1M1R
0 / 0 / 0
Регистрация: 04.11.2009
Сообщений: 55
21.01.2010, 12:50  [ТС]     Программа с простыми числами #3
хорошо, через пару минут скину
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
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]);
Не проверял. Возможны описки
VLAD1M1R
0 / 0 / 0
Регистрация: 04.11.2009
Сообщений: 55
21.01.2010, 13:14  [ТС]     Программа с простыми числами #5
насчет простых чисел: в задании имеется ввиду, что нужно вывести все простые числа из файла (т.е. те, которые я сам прописал в txt, как я понял) У меня есть множество чисел в файле. Я ввожу с клавы число, а затем нужно чтобы на экране появились все простые числа, которые не содержат той цифры, что я ввел с клавы. (как то так)
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
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       // не простое
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.01.2010, 13:36     Программа с простыми числами
Еще ссылки по теме:

C++ Создать двусвязный список с простыми числами
C++ Заполнить массив размером в 1000 простыми числами
C++ Заполнить массив n*m простыми числами

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

Или воспользуйтесь поиском по форуму:
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 минуты
Буду очень благодарен, если поможете объединить все это в полноценную, нужную мне программу. Надеюсь, то что я выложил, как то поможет..
з.ы. Времени у меня осталось всего пару часов...
Yandex
Объявления
21.01.2010, 13:36     Программа с простыми числами
Ответ Создать тему
Опции темы

Текущее время: 10:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru