Loading...
ron2345 avatar ron2345 1 Точки

Прости числа

Да се напише програма, която изчита редица от цели числа на един ред от клавиатурата и ги записва в масив. Програмата да изведе броя на числата, които са прости. Ако няма такива да се изведе “No”.

 

Примерен вход:

4 5 43 12 15 7

25 81 56 231

Изход

5 43 7

No

Чудя се как да задам правилно условието за проверката.

Тагове:
0
Programming Basics
MartinBG avatar MartinBG 4803 Точки

Просто число (Prime number), е число, което се дели само на себе си и на 1.

Тук има примерна проверка (не е най-оптималната, но е достатъчна за задачата) на различени езици, вкл. C#:

    static bool isPrime(int n) 
    { 
        // Corner case 
        if (n <= 1) 
            return false; 
      
        // Check from 2 to n-1 
        for (int i = 2; i < n; i++) // възможна оптимизация: да се проверява до n / 2
            if (n % i == 0) 
                return false; 
      
        return true; 
    } 

 

0
ron2345 avatar ron2345 1 Точки

Само че със масив как ще стане

 

0
nickwork avatar nickwork 657 Точки

С масив

using System;
using System.Linq;

namespace PrimeNumbers
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] numbers = Console.ReadLine().Split().Select(int.Parse)
                .Where(x => Enumerable.Range(2, (int)Math.Sqrt(x) - 1)
                .All(divisor => x % divisor != 0)).ToArray();

            Console.WriteLine(numbers.Length == 0 ? "No" : string.Join(" ", numbers));
        }
    }
}

0
ron2345 avatar ron2345 1 Точки

Ще обесниш ли как работи този код

0
nickwork avatar nickwork 657 Точки

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

Вторият ред отпечатва на конзолата => ако дължината на масива е нула => "No"; ако дължината на масива не е нула => конкатенира на един ред всички стойности на масива, резделени със единичен спейс. В този ред е използван тернарен оператор (ако не си запознат с него можеш да потърсиш в инет информация , работи на принципа, който съм описал.

int a = 5;
int b = 3;
int larger = (a > b) ? a : b;

условие (a > b) , ако е вярно larger = a; ако не е larger =  b;

0
ron2345 avatar ron2345 1 Точки

Мерси

0
ron2345 avatar ron2345 1 Точки

Ще обесниш ли тва в скобите All

0
ron2345 avatar ron2345 1 Точки

И Where също

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