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

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

11.05.2009, 11:26. Просмотров 887. Ответов 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)); 
//---------------------------------------------------------- 
   } 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2009, 11:26
Ответы с готовыми решениями:

Криворукий код и его критика
Необходима критика криворукого кода. Желательно прилагать пояснения что не так,...

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

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

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

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

3
Otaka
1829 / 687 / 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
234 / 230 / 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

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

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

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


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

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

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