Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Java] Найти все простые числа диапазона


Автор: olka89 2.4.2007, 20:45
Помогите пожалуйста решить 2 задачи. нужно их написать на языке JAVA!! Очень прошу.помогите!!!!
Задача 1.
Вводишь с компьютера какое-то положительное целое число М, а на экран должны выводиться все простоые числа в диапазоне от 1 до М

Задача 2.
Напечатать в порядке возрастания все простые несократимые дроби, заключенные между 0 и 1, знаменатели которых не превышают 7.


МНЕ ОЧЕНЬ НУЖНЫ ЭТИ ЗАДАЧИ!!!!! ОЧЕНЬ ПРОШУ ВАС!!!!!!!  

Автор: LSD 3.4.2007, 11:25
1.
Код
import java.io.*;
import java.util.*;

public class Prime
{
  public static void main(String[] args) throws IOException
  {
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    System.out.print("Enter number: ");
    String str = reader.readLine();
    int m = -1;
    try
    {
      m = Integer.parseInt(str);
    }
    catch(NumberFormatException ex)
    {
      System.out.println("Invalid number: " + str);
      System.exit(1);
    }
    if(m <= 0)
    {
      System.out.println("Number must be positive");
      System.exit(1);
    }

    ArrayList<Integer> numbers = new ArrayList<Integer>();
    for(int i = 1; i <= m; i++)
    {
      boolean prime = true;
      for(int j = 2; j < i; j++)
      {
        if(i % j == 0)
          prime = false;
      }
      if(prime)
        numbers.add(i);
    }
    System.out.println("Prime number from 1 to " + m + ": " + numbers);
  }
}


2.
Код
import java.io.*;
import java.util.*;

public class Fractions
{
  public static void main(String[] args) throws IOException
  {
    ArrayList<Integer> numerators = new ArrayList<Integer>();
    ArrayList<Integer> denominators = new ArrayList<Integer>();
    for(int denominator = 1; denominator <= 7; denominator++)
    {
      for(int numerator = 1; numerator < denominator; numerator++)
      {
        if(!hasCommonDivisor(denominator, numerator) || numerator == 1)
        {
          numerators.add(numerator);
          denominators.add(denominator);
        }
      }
    }

    for(int i = 0; i < numerators.size(); i++)
      System.out.println(" " + numerators.get(i) + "/" + denominators.get(i));
  }

  private static boolean hasCommonDivisor(int i, int j)
  {
    int min = Math.min(i, j);
    for(int d = 2; d <= min; d++)
      if(i % d == 0 && j % d == 0)
        return true;
    return false;
  }
}

Автор: olka89 3.4.2007, 18:10
LSD, спасибо огромное,за потраченное тобою время и за помощб....но понимаешь...у меня такая проблема....я изучую этoт Java всего несколько месяцев и из того что ты мне напечатал, я понимаю очень-очень мало smile Я не смогу таке сдать в институте((((
Мы проходили только циклы for,while,switch case, if else.....ну короче оч мало. и вообще мы не проходили как задавать простые дроби на компе.а препод сказал  додуматься самим. а я с комьютерами и так не особо в ладах, а уж информатика точно не моё....помогите пожалуйста smile 

Автор: LSD 4.4.2007, 11:25
Цитата(olka89 @  3.4.2007,  18:10 Найти цитируемый пост)
Мы проходили только циклы for,while,switch case, if else.....ну короче оч мало. и вообще мы не проходили как задавать простые дроби на компе.а препод сказал  додуматься самим. а я с комьютерами и так не особо в ладах, а уж информатика точно не моё....помогите пожалуйста

Помочь чем?

Автор: olka89 4.4.2007, 20:18
Ну как-нибудь по проще написать программу можно? используя циклы for,if,whilе....???
А еще такой вопрос. Если я хочу задать обыкновенную дробь....как задать, какое число - в числителе,а какое - в знаменателе???

Автор: LSD 5.4.2007, 09:01
Цитата(olka89 @  4.4.2007,  20:18 Найти цитируемый пост)
Ну как-нибудь по проще написать программу можно? используя циклы for,if,whilе....???

Она и так простая, for и if в ней используются.

Первую можно переписать так:
Код
import java.io.*;
import java.util.*;

public class Prime
{
  public static void main(String[] args) throws Exception
  {
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    System.out.print("Enter number: ");
    String str = reader.readLine();
    int m = Integer.parseInt(str);

    if(m <= 0)
    {
      System.out.println("Number must be positive");
    }
    else
    {
      System.out.print("Prime numbers from 1 to " + m + ": ");
      for(int i = 1; i <= m; i++)
      {
        boolean prime = true;
        for(int j = 2; j < i; j++)
        {
          if(i % j == 0)
            prime = false;
        }
        if(prime)
          System.out.print(i + " ");
      }
    }
  }
}

Во второй упрощать нечего, там и так все прозрачно.

Цитата(olka89 @  4.4.2007,  20:18 Найти цитируемый пост)
Если я хочу задать обыкновенную дробь....как задать, какое число - в числителе,а какое - в знаменателе???

Не понял вопроса.

Автор: olka89 5.4.2007, 15:01
Ну в общем задача про дроби....
можно просто тупо задать числа от 1 до 7...ну а=1,b=2,c=3,d=4,e=5,f=6,g=7.
а мне нужны все несократимые дроби в пордке возрастания, у которых знаменатель не превышает 7...там получается штук 15 дробей. можно просто тупо написать для каждой дроби:
System.out.println("a/g"+" ");   ?????

Добавлено через 3 минуты и 54 секунды
ну или как мне задать одну седьмую к примеру??? 1/7 ?? а разве компьютер не станет мне делить 1 на 7 ? и не напишет что это не целое число? 

Автор: LSD 5.4.2007, 16:01
Если ты хочешь задать обычную дробь, то тебе надо задать ее числитель и знаменатель. В моем примере числители хранятся в numerators, а знаменатели в denominators.

Автор: olka89 5.4.2007, 16:07
Понятно....то есть так я написала - не будет работать? smile 

Автор: LSD 5.4.2007, 17:31
Если ты напишешь 1/7, то получишь 0, если 1.0/7.0, то получишь 0.14285714285714285.

В принципе есть пакет http://jakarta.apache.org/commons/math/, в котором есть готовые классы для работы с дробями.

Автор: olka89 5.4.2007, 17:37
А как написать так,что бы мне программа выдавала именно 1/7, а не делила 1 на 7 ??

Автор: LSD 5.4.2007, 17:48
Код
System.out.println(numerator + "/" + denominator);

Автор: olka89 5.4.2007, 17:53
Огромное спасибо  smile  smile  smile 

Автор: LSD 5.4.2007, 18:22
Пожалуйста smile

Если вопрос решен, нажми кнопку "Пометить вопрос как решенный" (в верху страницы, там где название темы).

Автор: olka89 5.4.2007, 18:37
Ну в друг у меня еще вопросы будут...я пока оставлю...
А где мы задаем чему равны numerator  и  denominator ???
ведь они же меняются: знаменатель,например, от 1 до 7

Автор: LSD 5.4.2007, 21:24
Цитата(olka89 @  5.4.2007,  18:37 Найти цитируемый пост)
А где мы задаем чему равны numerator  и  denominator ???
ведь они же меняются: знаменатель,например, от 1 до 7

Вот именно для этого и нужны циклы smile 
Посмотри внимательно на код.

Автор: olka89 7.4.2007, 17:38
Блин,всё равно у меня ничего не получается!!!!!  smile 

Автор: LSD 8.4.2007, 18:27
На фразу у меня ничего не получается можно посоветовать, только почитать книжки и попробовать еще раз.

Если хочешь, чтобы тебе помогли, объясняй четче, что именно не получается/непонятно smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)