Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java
Войти
Регистрация
Восстановить пароль
 
lifestyle
Mobile Developer
233 / 229 / 18
Регистрация: 10.05.2009
Сообщений: 917
#1

Нужна критика - Java

11.05.2009, 11:26. Просмотров 871. Ответов 3
Метки нет (Все метки)

собственно хотелось бы узнать насколько граматно написано и можно ли что нить сократить и уменьшить время вычислений
Java
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
public class Primes { 
//------------------------------------------------------ 
   public static boolean isPrime(int num){ 
      boolean b=true; 
      for (int i=2; i <=Math.sqrt(num) && b;i++){ 
         if (num%i==0) b=false; 
      } 
      return (b); 
   } 
//-------------------------------------------------------- 
   public static  int [] primes(int min,int max){ 
      int k=0, size=max-min; 
      int []arr1=new int[size]; 
      for (int i=min;i<(max);i++ ){ 
         boolean d=true; 
         for (int j=2; j<=Math.sqrt(i) && d;j++){ 
          if (i%j==0){ 
             d=false; 
             } 
         }   
            if (d){   
        arr1[k]=i; 
               System.out.print(arr1[k]+","); 
               k++;    
            } 
        }
 return (arr1);    
} 
//---------------------------------------------------------- 
   public static int closestPrime(int num) {  
      int [] arr1=new int [2]; 
      int temp1, temp2; 
      int i=num,j=2; 
      for (i=num-1;i>1;i--){    
         boolean c=true; 
         for(j=2;j<=Math.sqrt(i) && c;j++){    
            if (i%j==0) c=false; 
         } 
         if (c){ 
          arr1[0]=i; 
         break; 
         } 
      } 
      for(int y=num+1;y>num;y++){ 
         boolean e=true; 
         for (int m=2;m<=Math.sqrt(y) && e;m++){ 
            if (y%m==0) e=false; 
         } 
         if(e){ 
            arr1[1]=y; 
         break; 
         } 
      } 
      temp1=(num-arr1[0]); 
      temp2=(arr1[1]-num); 
      if (temp1==temp2){ 
         return (arr1[0]); 
        } 
      else if (temp1<temp2) 
          return (arr1[0]); 
      else
         return (arr1[1]); 
   } 
//---------------------------------------------------------- 
   public static void main(String[] args) { 
    int n=MyConsole.readInt("Enter num>0:"); 
      while (n<=0){ 
       n=MyConsole.readInt("Error n<=0 enter new num:"); 
      } 
      boolean prime = isPrime(n); 
      System.out.println(prime); 
//----------------------------------------------------------       
      int min=MyConsole.readInt("Enter min:"); 
      int max=MyConsole.readInt("Enter max:"); 
      while (min<=1){ 
         min=MyConsole.readInt("Error min<=1 enter new min:"); 
      } 
      while (max<=1){ 
         max=MyConsole.readInt("Error max<=1 enter new max:"); 
      } 
      primes(min,max); 
      System.out.println(); 
//----------------------------------------------------------          
      int m=MyConsole.readInt("Enter num:"); 
      while (m<=1){ 
         m=MyConsole.readInt("Error n<=1 enter new num:"); 
      } 
      System.out.println(closestPrime(m)); 
//---------------------------------------------------------- 
   } 
}

http://www.cyberforum.ru/java/thread1935105.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2009, 11:26
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Нужна критика (Java):

Почти готовый морской бой (нужна критика кода)
Морской бой 1. код разделён на два пакета logic и swing 2. правильно ли я...

Адекватная критика выполнения задачи
Недавно пришло тестовое задание от нашей крупной IT компании. Задание...

Критика проекта "гостевой книги" на технологии Spring
Добрый день, недавно возникла необходимость создания &quot;гостевой книги&quot; на...

Нужна критика :)
Всем привет! Дело такое, изучаю php, сравнительно недавно. Начал писать скрипт...

Нужна критика
Сделал прогу для детей она еще не закончена посоветуйте что здесь лишнее а что...

3
Otaka
1827 / 685 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
11.05.2009, 13:41 #2
У тебя везде используются подобные конструкции:
Java
1
for (int j=2; j<=Math.sqrt(i) && d;j++)
зачем каждый раз пересчитывать корень? Ведь только время теряешь.
надо как-то так:
Java
1
2
int sqr=Math.sqrt(i);
for (int j=2; j<=sqr && d;j++)
0
lifestyle
Mobile Developer
233 / 229 / 18
Регистрация: 10.05.2009
Сообщений: 917
11.05.2009, 13:52  [ТС] #3
дык у меня две пары операторов фор и один растет вверх i++а другой вниз i-- та что мне дает эта строка???
Плюс ко всему это три разные функции ...как их можносвязать этой переменной?
0
Xardas
15 / 15 / 2
Регистрация: 08.05.2009
Сообщений: 81
12.05.2009, 18:55 #4
их не нужно связывать.

просто есть пара циклов - внешний и внутренний. внешний по i, и в пределах внешнего цикла значение sqrt(i) одно и то же. во внутреннем цикле каждый раз считать его - накладно. соответственно, нужно в каждой функции вынести перед внутренним циклом вычисление корня из счетчика внешнего цикла, как и показал Otaka.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.05.2009, 18:55
Привет! Вот еще темы с решениями:

Нужна критика
Добрый день, сразу скажу что критику на счет дизайна можете оставить при себе...

Нужна критика вёрстки
Доброго времени)) Вобщем верстаю, читаю, видео смотрю, вопросы задаю)) Пытаюсь...

Нужна критика скрипта
Здравствуйте, недавно начал изучать php. В качестве учебника выбрал Самоучитель...

Осваиваю С#, нужна критика
using System; /*Задача программы * добавление просмотр редактирование базы...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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