Loading...
Mazulov avatar Mazulov 3 Точки

[Homework] C# Basics - "Математика за програмисти" - Преправка на домашното

Здравеите.

 

Исках да попитам дали мога да използвам това: http://pastebin.com/zUyWSGtV  - "задачата Some Primes"

за домапната работа от урок"Математика за програмисти".

Ако е написано на беден стил,мисля че е нормално за 3 час.

Ако някои може да провери дали е точно и да ми даде отговор ще съм му благодарен.

 

Благодаря Предварително :) :)

 

Тагове:
0
Programming Basics 28/11/2014 04:06:17
Filkolev avatar Filkolev 4482 Точки
Best Answer

Не си разбрал условието на задачата може би. Целта е да намериш 24-тото, 101-вото и 251-вото просто число. Не се иска да пишеш програма, а само да ги намериш (как - твоя работа, но едно търсене в гугъл върши работата за 5 секунди).

Иначе конкретно по програмата ти - има доста излишни неща и няма да сработи правилно. Няма смисъл на този етап да се впускам в подробности, защото има време до лекциите за условни конструкции и цикли (каквито са ти нужни, за да решиш такъв тип задача). Но на първо време ето това:

if(num % 2 == 0)

{

}

е безсмислено. Самата идея на условната конструкция е да вършиш някакво действие ако е изпълнено определено условие. Ако не извършваш нищо (както е в случая), то условната конструкция е излишна.

Хвани някой асистент следващата лекция ако все пак искаш да напишеш програма за тази задача.

5
Mazulov avatar Mazulov 3 Точки

Аз съм готов с домашната и разбрах какво се търси но въпроса ми беше дали тва може да се нарече код.Смисл добре ли е подреден ,има ли пропуски и т.н.а домашното е решено преди седмица сигурно ,просто реших малко да си наовара мозъка.Също да те питам за judge системата може ли 1 линкче мерси предвърително :D

 

0
Filkolev avatar Filkolev 4482 Точки

В страницата на курса има линк към Judge, най-отгоре. Също в домашните, в които има задачи от изпити, са дадени линкове. Като влезеш в системата (с логин детайлите ти от softuni.bg), избираш най-отгоре C# Baiscs и ще ти излязат всички изпити, давани до момента. Иначе - judge.softuni.bg

А за програмата, както казах най-добре на място някой да ти обясни.

 

0
dim4o avatar dim4o 288 Точки

За намиране на N-тото просто число можеш да използваш следното приближение: Π(x)~x/ln(x)

Π(x) е функция, която връща броя на простите числа по-малки от x. Лесно се вижда, че Π(2000)~263, което значи, че имаш да проверяваш по-малко от 2000 числа, т.е. би трябвало дори с най-елементарния алогоритъм за проверка на просто число решението да работи бързо. За по-големи числа можеш да използваш и решетката на Ератостен. Успех !

 

0
Mazulov avatar Mazulov 3 Точки

Благодарско ще го погледна  кода,и ще прочета и за решетката.:))

0
doktoraaaa avatar doktoraaaa 42 Точки

Ето един сайт в който са описани първите 500 прости числа  http://primefan.tripod.com/500Primes1.html като се има в предвид че единицата не е просто число

1
13/01/2015 16:04:58
Demarkas avatar Demarkas 2 Точки

Бате докторе първо в тоя сайт има грешка, и ще забележиш, че има такава по втората задача като ги проверяваш за Фибоначи...

Виж линка по долу  и ще се увериш, че съм прав......

0
Demarkas avatar Demarkas 2 Точки

Ето Ви друг сайт който Ви решава 2/3 от домашното. http://www.numberempire.com/

Дано да съм бил полезен...  cool

2
bizchou avatar bizchou 4 Точки

Несъмнено линка помогна много. Но не разбирам каква точно е грешката в линка на @doktoraaaa, освен че като първо число стои 1, което той е споменал за грешно?

1
Demarkas avatar Demarkas 2 Точки

Сори за което, не съм му дочел коментара докрай... моя грешка....

0
Debss avatar Debss 17 Точки

Здравейте, тъй като пропуснах откриването на курса не ми стана ясно - това домашно как трябва да го предадем - да напишем програма и да я сложим в txt файл или да обясним нещо с думи и пресмятания... ? 

0
AnnaTodorova avatar AnnaTodorova 3 Точки

Здравей, идеята на домашното е да решиш задачите и да напишеш отговорите им в WordPad ++. Не е нужно да описваш логиката си, нито да пишеш програма (нелогично е след като още не е минала първата лекция за въведение в програмирането) - достатъчни са само отговори. 

След като напишеш домашното го конвертираш в .rar или .zip (опциите са изброени в полето за предаване). 

2
denislav.krumov avatar denislav.krumov 1 Точки

Хората които са Онлайн ако предават домашни това отразява ли се в приема Ниво 1 ? Гледах лекцията и все пак споря с един приятел да помогнете да решим спора хаха :) 

0
Kamigawa avatar Kamigawa 750 Точки

Оценката за онлайн студентите се формира:

Online students
Exam – 100%
Forums activity – bonus up to 10%

1
Debss avatar Debss 17 Точки
Има ли нещо вярно от домашното: Problem 1. Some Primes 24th - 89 101st - 547 251st - 1531 Problem 2. Some Fibonacci Primes 24th - 46368 = 25 x 32 x 7 x 23 101st - 573147844013817084101 = 743519377 x 770857978613 251st - 12776523572924732586037033894655031898659556447352249 = 582416774750273 x 21937080329465122026187124199656961913 Problem 3. Some Factorials 100 ! = 9.33262154 × 10157
0
14/01/2015 16:41:36
neda.v.veleva avatar neda.v.veleva 4 Точки

Втора задача гласи: Check if the 24th, 101st and 251st prime numbers are part of the base Fibonacci number set. What is their position?, т.е. да проверим дали 24-тото, 100-вото и 251-вото просто число присъстват в редицата на Фибуначи и ако да каква е тяхната позиция. 24-тото просто число (както си написал/а по-горе) е 89, а 89 е 12-тото число в редицата на Фибуначи /0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89/.

0
Debss avatar Debss 17 Точки

Права си. В такъв случай:

Problem 2. Some Fibonacci Primes
89 е 12-тото число в редицата на Фибуначи
547 не е от редицата на Фибуначи
1531 също не е от редицата на Фибуначи

0
neda.v.veleva avatar neda.v.veleva 4 Точки

Здравей,

Относно условните конструкции трябва да избягваш толкова много if else, защото рано или късно нещо ще се обърка, но да кажем, че това малко по-нататък ще го разбереш. С If можеш да провериш дали едно условие не е вярно,т.е. false, като сложиш една ! пред условието например твоето:

if(num % 2 == 0){

}
else
{
  if (num % 3 == 0)
  {

  }
  else... може да стане така:

if (!(num % 2 == 0) && !(num % 3 == 0) && !(num % 5 == 0)) - това гласи ако n не се дели на 2, 3 и 5 направи едикакво си...

&& - това е логическо и. Връща true само когато и всички условия са true.

И още нещо относно

else

{

      if (...) {нещо си...}

по-добре го пиши така:

else if(...)       

{

нещо си...

Надявам се да съм била полезна

1
GogoK avatar GogoK 80 Точки

Здравейте,

Ще ползвам темата и за моят 'проблем', и преди да ме е нахокал някой, че не съм разбрал условието на домашното.. не е така. Опитвам се да разучавам езикът и затова се опитах да направя нещо по смислено за да свикна с негго по бързо. Имам няколко въпроса и някой ако помогне му благодаря предварително!

Some-Primes

'counting' и 'prime 24;101;251'. Тъй като не можах да присвоя 24-прайм от цикъла в даден момент по друг начин, го оставих така, като за 'i' добавям +1. Това ме дразни най-много в цялата боза "if (counting == 24)  prime24 = i + 1;". При това присвояване 'i' все още не е взело стойността 'i++' и затова изостава с '-1'. Та въпросът ми е, при така написаният код как е правилния синтаксис и къде греша с логиката ако там ми е грешката?


В началото идеята ми беше след като стане подобно преброяване да се изписва на конзолата извиканият Prime; "Enther a Prime number: ", примерно 24. И на конзолата да изписва стойността на Прайма(24-Praim is 89). Но след като не успях да стигна до друго по добро присвояване оставих кода така и се опитах малко да го 'декорирам'. Та и от там ми извират другите въпроси.

В една от лекциите, мисля че за оператори и изрази имаше пример за "char simbol = 'a';", като а=89... или нещо такова, но при различен текстов формат може и да е 55.. стойността най-вероятно е различна цитирам е по спомен. Та затова при отпечатването ползвам "No" вместо символа за номер, който даже не си направих труда да го потърся. Но въпросът ми е, ако ползвам подобни символи в които не съм сигурен дали друг ще ги има в неговия формат, ще се отпечатват ли по същият начин(както аз съм ги изписал) или се променят в зависимост от него?


За "new string('-', 80)" - може ли по друг начин да се изписват символите до края на реда за да не се налага "Console.WindowWidth = 80;" да променя ширината на конзолата?


И за "Console.Write(....... .... "\t");" да се слага "\n" на определен брой табулации.
Идеята ми е да се запази нещо като таблица, защото така ми хареса, и при мен си бачка добре. Но се замислих че при друг може и да не е така. Както и ако го няма "if (counting == 252) break;", при едно число от 110 000 и нагоре.... въобще не прилича на таблица :)

0
NikolayUzunov avatar NikolayUzunov 7 Точки

Аз съм онлайн студент в C# Basics Alpha след като си кача домашното немога да свалям чужда за оценяване . В лявото поле пише "Срокът за оценяване на домашни е изтекъл" .  Така ли трябва да е ?

Прегледах клипчетата пак и намерих отговора. Трябва да изтече срока за качване на домашните 16/01/2015 23:59:59 и след това в рамките на 3 дена могат да се свалят чужди и да се оценяват . 

0
15/01/2015 09:00:39
Filkolev avatar Filkolev 4482 Точки

Според мен малко изпреварваш нещата, върни се на тази задача като минеш повече лекции и изрешиш задачите към тях. Както виждаш, имаш доста неясноти; личи си, че назнайваш материал от по-напред, но и че не ти е слегнал съвсем, което става с време и практика.

Ще пробвам да ти отговоря все пак.

1) числата, които проверяваш, трябва да ги пускаш в цикъл, а не всяко едно да се подава от конзолата. В момента излиза, че трябва да въвежда потребителят всички числа от 1 до n, за да стигне до еди-кое си просто число. Тук трябва да се ползват два вложени цикъла или да извадиш в метод проверката за просто число - материал от последните 2-3 лекции.

2) За counting променливата. Увеличаваш я в рамките на Console.WriteLine, което не е особено добра идея; но все пак ако искаш да е там, за да се увеличи брояча преди да се изпише, ползвай другия вариант на инкрементация: ++counting, той се изпълнява преди принтирането, за разлика от counting++. Това е материал от лекцията за оператори и изрази.

3) За да си реализираш идеята да може да викаш кое да е поред просто число, трябва програмата ти или да се изпълнява само веднъж, т.е. едно пускане - едно викане на просто число, или да ползваш списък, в който да пазиш всички прости числа в определен диапазон и да може да ги викаш по индекс. Списъците се разглеждат в последните теми от курса.

4) Символите са по природа числа, но се получават нежелани резултати само ако ги ползваш като такива, т.е. ако принтираш символът 'с', на козолата ще си излезе 'с', освен ако изрично не кажеш, че искаш числото, което отговаря на този символ. Друг вариант за грешка е ако ползваш събиране или други операции: + между два символа връща число. В лекцията за типове данни и променливи може да го има това, но не съм сигурен дали се обръща специално внимание на тези особености.

5) Зависи от настройките на този, който пуска програмата, дали ще излизат по-особените символи. Ако искаш да ползваш уникодски такива, трябва да добавиш един ред в началото на програмата, намери го отнякъде, не го помня наизуст (в учебника го има със сигурност). И ако потребителят ползва шрифт, който не поддържа уникод, пак ще му излязат маймунки. А за по-стари версии на Уиндоус нищо не може да накара уникодски символи да се визуализират правилно.

6) Конзолата не е графична среда, в която може всичко да напаснеш да изглежда добре. Ако направиш така, че да излизат ОК и числа до 1000 000 000, какво ще стане ако ти подадат по-голямо? Пак мазало.  Има по-добри начини за форматиране и подравняване на изхода, разгледай в темата за вход и изход от конзолата.

 

Ако си присъствена форма на обучение, хвани следващия път някой асистент, доста по-ефективно ще е на място да ти обясни някой.

1
GogoK avatar GogoK 80 Точки

От Он-Лайн'а съм поради ред причини и ще се ограничавам с форума, а отговор като този са като допълнителна лекция за което съм ти много благодарен, най-малко че съм ти откраднал не малко от времето за да помогнеш!
Последната задача която решавах беше "Print Long Sequence" 2, -3....1000 и от там ми дойде идеята че ще стане решението много лесно и реших да пробвам... и си чупих главата цял ден :)
Другите въпроси просто ме чепкаха и затова попитах, разбирам че засега не са от такова значение, но може би скоро ще ми помогне поне едно от тях за друга задача... Благодаря!!

1
15/01/2015 19:55:26
zeksman avatar zeksman 2 Точки

Здравейте,

Ето един код,който намерих и само промених,до кое число да ги извежда. Не са номерирани и за това ще трябва да ги бройш,за да разбереш,кое е 24-то,101-то и 251-то число.

class PrimeNumbersProgram
{
      static void Main(string[] args)
     {
          bool isPrime = true;
          Console.WriteLine("Prime Numbers : ");
          for (int i = 2; i <= 1600; i++)
         {

              for (int j = 2; j <= 1600; j++)

             {

                   if (i != j && i % j == 0)
                  {
                       isPrime = false;
                       break;
                  }

             }
             if (isPrime)
            {
                  Console.Write("\t" + i);
            }
            isPrime = true;
      }
      Console.ReadKey();
}

 

0
Filkolev avatar Filkolev 4482 Точки

Този алгоритъм може доста да се подобри. 

На първо място, може да се добави брояч за простите числа и да се принтират само тези, които ни интересуват в задачата. 

Външният вложен цикъл предполага, че 251-вото просто число е по-малко 1600 (то наистина е), но ако трябва да намериш 505-тото просто число например и не знаеш то колко е голямо, за да зададеш горна граница на цикъла, ще се получи проблем. По-логичният избор в случая е while цикъл, който да спре, когато сме намерили и последното нужно число, т.е. 251-вото.

Вътрешният цикъл, който проверява дали числото е просто, няма нужда и той да се върти до 1600, неговата горна граница може да се смени на j <= Math.Sqrt(i), при което проверката дали i != j става излишна (но трябва да се провери дали i != 2).

bool isPrime може да се инициализира в началото на външния цикъл и така няма да има нужда да се прави отново на true в края му.

Ето твоя код малко променен (само вътрешния цикъл): ЛИНК

И един по-различен с while цикъл: LINK

Тук се ползват доста непредадени все още неща, така че ако има нещо неясно питай.

0
angel7 avatar angel7 1 Точки

Здравейте!

Искам да се включа в темата, защото виждам доста объркващи отговори.

Check if the 24th, 101st and 251st prime numbers are part of the base Fibonacci number set. What is their position?

Тъй като 24-то просто число според таблицата тук е 89, 101-то е 547, 251-то е 1597, т.е отговорът на първата задача, то тогава би следвало да се търсят съответстващите им числа, а не самите позиции на простите числа.

И така тук числото 89 е на 11- а позиция, 1597  е на позиция 17, а 547 не съществува в редицата на Фибуначи.

0
10/05/2015 22:00:16
enevlogiev avatar enevlogiev 1168 Точки

Е добре де, кое те обърква в цялата работа ?

 

0
JOHNY avatar JOHNY 196 Точки

На първата лекция винаги се казва "Бъдете активни във форума!" и "5% от изпитната оценка е на базата на активността Ви!".

Човека се опитва да следва тази максима и да е полезен, лошо няма. :)

Няма объркване, има елегантно представяне.

0
angel7 avatar angel7 1 Точки

Например отговор като този

"Втора задача гласи: Check if the 24th, 101st and 251st prime numbers are part of the base Fibonacci number set. What is their position?, т.е. да проверим дали 24-тото, 100-вото и 251-вото просто число присъстват в редицата на Фибуначи и ако да каква е тяхната позиция. 24-тото просто число (както си написал/а по-горе) е 89, а 89 е 12-тото число в редицата на Фибуначи /0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89/."

или въпрос като този "Има ли нещо вярно от домашното: Problem 1. Some Primes 24th - 89 101st - 547 251st - 1531 Problem 2. Some Fibonacci Primes 24th - 46368 = 25 x 32 x 7 x 23 101st - 573147844013817084101 = 743519377 x 770857978613 251st - 12776523572924732586037033894655031898659556447352249 = 582416774750273 x 21937080329465122026187124199656961913 Problem 3. Some Factorials 100 ! = 9.33262154 × 10157"

И тъй като търсех решението на проблема видях темата с въпроси и отговори, смятам че давам правилно решение, което никой дотук не е предложил.

 

 

 
 
 
 
0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.