Hi
On Dec 8, 2004, at 04:59 pm, McGehee, Robert wrote:

R users, I am having a problem with the modulus operator for large
numbers as follows,

a <- 2
n <- 561
## n is the first Carmichael number, so by Fermat's Little Theorem the
below should equal zero.

(a^(n-1) - 1) %% n
[1] 2.193172e+152


I don't think Fermat's Little Theorem is relevant here. Euler's theorem would be though:
a^phi(561)=1 (mod 561) where phi is the totient function.


For your problem, try this:

f <- function(a,p){
  a <- as.integer(a)
  p <- as.integer(p)
  out <- as.integer(1)
  for(i in 1:p){
    out <- (out*a)%%p
  }
  return(out)
}


Then



> f(2,561)
[1] 1
> f(3,561)
[1] 375        (sic)
> f(5,561)
[1] 1
>


best

rksh

## Seems that R and Fermat disagree

## Also,
1000000000000000000 %% 11
[1] -32

Thi______________________________________________
[EMAIL PROTECTED] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html



--
Robin Hankin
Uncertainty Analyst
Southampton Oceanography Centre
European Way, Southampton SO14 3ZH, UK
 tel  023-8059-7743

______________________________________________
[EMAIL PROTECTED] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

Reply via email to