Sprawdź się
Zadanie 3. Średnia arytmetyczna czynników pierwszych
W pliku liczby.txt w oddzielnych wierszach znajduje się 200 liczb naturalnych, każda o długości od 1 do 5 cyfr.
Przycisk do pobrania pliku TXT z treścią zadania. Pobierz załącznik
Dla każdej liczby z pliku liczby.txt podaj średnią arytmetyczną ze wszystkich jej czynników pierwszych, zaokrągloną do 2 miejsc po przecinku. Odpowiedzi zapisz w pliku wynik.txt.
Jeśli liczba nie ma czynników pierwszych, program powinien zwrócić wartość 0.
Do oceny oddajesz:
plik
wynik.txtzawierający odpowiedź do zadania (200 liczb oznaczających średnie arytmetyczne z czynników pierwszych liczb z plikuliczby.txt, każda średnia w nowej linii);plik(i) z komputerową realizacją zadania (kodem programu).
Przedstaw rozwiązanie zadania dla przykładowych danych, pisząc program w języku C++, Java lub Python. Następnie rozwiąż zadanie lokalnie na swoim komputerze, pamiętając o poprawnym wczytaniu i zapisywaniu plików. Rozwiązanie zadania znajdziesz na dole tej sekcji.
JĘZYK JAVA
Przykładowe rozwiązanie:
public class Main {
public static double srednia_czynnikow(int n) {
if (n < 2) {
return 0;
}
int licznik = 0;
double suma = 0;
while (n % 2 == 0) {
licznik += 1;
suma += 2;
n = n / 2;
}
for (int i = 3; i <= Math.sqrt(n) + 1; i += 2) {
while (n % i == 0) {
licznik += 1;
suma += i;
n = n / i;
}
}
if (n > 2) {
licznik += 1;
suma += n;
}
return Math.round(suma / licznik * 100.0) / 100.0;
}
public static void main(String[] args) {
int[] liczby = {37, 955, 482, 1410, 420, 786, 1234, 9997, 8532, 6624};
for (int i = 0; i < 10; i++) {
System.out.println(srednia_czynnikow(liczby[i]));
}
}
}JĘZYK C++
Przykładowe rozwiązanie:
#include <iostream>
#include <cmath>
using namespace std;
double srednia_czynnikow(int n) {
if (n < 2) {
return 0;
}
int licznik = 0;
double suma = 0;
while (n % 2 == 0) {
licznik += 1;
suma += 2;
n = n / 2;
}
for (int i = 3; i <= sqrt(n) + 1; i += 2) {
while (n % i == 0) {
licznik += 1;
suma += i;
n = n / i;
}
}
if (n > 2) {
licznik += 1;
suma += n;
}
return round(suma / licznik * 100.0) / 100.0;
}
int main() {
int liczby[] = {37, 955, 482, 1410, 420, 786, 1234, 9997, 8532, 6624};
for (int i = 0; i < 10; i++) {
cout << srednia_czynnikow(liczby[i]) << endl;
}
}JĘZYK PYTHON
Przykładowe rozwiązanie zadania:
from math import sqrt
liczby = [37, 955, 482, 1410, 420, 786, 1234, 9997, 8532, 6624]
def srednia_czynnikow(n):
if n < 2:
return 0
licznik = 0
suma = 0
while n % 2 == 0:
licznik += 1
suma += 2
n = n // 2
for i in range(3, int(sqrt(n)) + 1, 2):
while n % i == 0:
licznik += 1
suma += i
n = n // i
if n > 2:
licznik += 1
suma += n
return round(suma / licznik, 2)
for l in liczby:
print(srednia_czynnikow(l))Odpowiedź
Poprawna odpowiedź dla danych z pliku:
Przycisk do pobrania pliku TXT z wynikiem zadania. Pobierz załącznik