Τρίτη, 9 Δεκεμβρίου 2014

$136$

Ο καθηγητής των Μαθηματικών λέει στον Πέτρο: το γινόμενο δύο ακεραίων αριθμών και στον Παύλο το άθροισμα τους. Κανείς τους δεν γνωρίζει τους αριθμούς που είπε ο καθηγητής στον άλλον. 
Ένας από αυτούς λέει: Δεν μπορείς να μαντέψεις τον αριθμό που είπε σε μένα. 
Τότε, ο άλλος απαντά: Κάνεις λάθος, ο αριθμός είναι 136.
Ποιους αριθμούς είπε ο καθηγητής στον καθένα;
Mediterranean Mathematics Olympiad 2005
 Διασκεδαστικά Μαθηματικά    www.eisatopon.blogspot.com     

1 σχόλιο:

  1. 1. Η Πέτρος δεν μπορεί να είναι αυτός που κάνει την πρώτη δήλωση, μιας και θα μιλούσε μόνο αν ο αριθμός του ήταν πρώτος. Κι αυτό γιατί τότε θα μπορούσε να συμπεράνει πως ο Παύλος είχε τον αριθμό s=p+1 (αφού ένας πρώτος αριθμός αναλύεται μόνο στο γινόμενο 1 επί τον εαυτό του). Άρα πρώτος μίλησε ο Παύλος.

    2. H Παύλος τώρα, σκεπτόμενος ανάποδα, διαπίστωσε ότι αφαιρώντας 1 από τον αριθμό του δεν προκύπτει πρώτος αριθμός. Άρα ο Πέτρος δεν θα μπορούσε - με βάση το προηγούμενο σκεπτικό - να καταλάβει τον αριθμό του. Έτσι δήλωσε "Δεν μπορείς να μαντέψεις τον αριθμό που είπε σε μένα".

    3. Η Πέτρος όμως, εξαιτίας αυτής της δήλωσης του Παύλου, αντιλαμβάνεται ότι το s-1, δηλαδή το x+y-1, δεν είναι πρώτος.

    4. Για να καταλήξει στη 2η δήλωση, σημαίνει ότι ο αριθμός που έχει μπορεί να αναλυθεί σε γινόμενο δύο αριθμών x και y με ένα και μόνο τρόπο ώστε να ισχύει ότι x+y-1 δεν είναι πρώτος.

    5. Αν τρέξει κανείς τον παρακάτω R κώδικα θα δει ότι υπάρχει μόνο μία περίπτωση ένας αριθμός x*y, όπου x+y = 136, να μπορεί να αναλυθεί σε γινόμενο δύο αριθμών x και y με ένα και μόνο τρόπο ώστε να ισχύει ότι x+y-1 δεν είναι πρώτος. Όταν ο ένας είναι το 1 και ο άλλος το 135.


    # Κώδικας σε R ############################

    library(numbers)
    library(spuRs)

    for (x in 1:68) {
    fact = c(1, primeFactors(x * (136 - x)))
    print(fact)

    ve <- vector()
    for (i in 1:(length(fact) - 1)) {

    total = fact
    first <- combn(total, i, MARGIN=2)
    second <- apply(first, 2, function(z) total[is.na(pmatch(total, z))])

    if (is.null(dim(second)))
    second <- matrix(second, ncol = length(second))

    for (j in 1:ncol(first)) {

    u = 0
    u = u + 1 - prime(prod(first[, j]) + prod(second[, j]) - 1)

    if (u == 1 & !(prod(first[, j]) %in% ve)) {
    cat('x=',x," y=",136-x," first=",prod(first[, j])," second=",prod(second[, j]),"\n")}

    ve <- c(ve,prod(first[, j]),prod(second[, j]))
    }
    }
    }

    ΑπάντησηΔιαγραφή