Code covered by the BSD License
-
demo_vpi
-
base2vpi(B,base)
bin2vpi: converts an integer in an arbitrary base into vpi (decimal) form
-
bin2vpi(B)
bin2vpi: converts a binary representation of an integer into vpi (decimal) form
-
binomfactors(n,k)
binomfactors: list all factors of the binomial coefficient nchoosek(n,k)
-
catdigits(N,M)
catdigits: concatenates the digits of N and M into an aggregate number
-
createPrimesList
createPrimesList - For users of older matlab releases, this function will generate a compatible _primeslist_ file
-
factorialfactors(n)
factorialfactors: efficient computation of the prime factors of factorial(n)
-
fibonacci(n)
fibonacci: vpi tool to efficiently compute the n'th Fibonacci number and the n'th Lucas number
-
getprimeslist
loads the primeslist file, and decompresses it, returning the list of primes up to 2^26
-
ispalindrome(N)
ispalindrome: test if the number N (vpi or numeric, or a digit string as a vector) is a palindrome
-
iszero(INT)
vpi/iszero: test to see if a numeric object is zero
-
legendresymbol(a,p)
legendresymbol: computes the legendre symbol (a/p) for prime p
-
lineardiophantine(A,B,C)
lineardiophantine: solve the linear Diophantine equation, A*x + B*y = C
-
mersenne(p)
mersenne: identify whether 2^p-1 is a Mersenne prime, using the Lucas-Lehmer test
-
minv(a,p)
-
modfibonacci(n,modulus)
fibonacci: compute the n'th Fibonacci number and the n'th Lucas number, all modulo a given value
-
modrank(A,p)
modrank: compute the rank of an integer array, modulo p
-
modroot(a,p)
-
modsolve(A,rhs,p)
-
nextprime(N,direction,kprimes)
nextprime: finds the next larger prime number directly above (or below) N
-
numberOfPartitions(N)
numberOfPartitions: compute the number of partitions of the positive integer n
-
powermod(a,d,n)
vpi/powermod: Compute mod(a^d,n)
-
quadraticresidues(N)
quadraticresidues: returns a list of the possible quadratic residues of the integer N
-
quotient(numerator,denominato...
quotient: divides two integers, computing a quotient and remainder
-
subfactorial(N)
subfactorial: The subfactorial of an integer (or integers) N, known as !N
-
totient(N)
vpi/totient: the number of positive integers less than N that are coprime to N
-
vpi(N)
vpi: Creator function for a variable precision integer
-
View all files
from
Variable Precision Integer Arithmetic
by John D'Errico
Arithmetic with integers of fully arbitrary size. Arrays and vectors of vpi numbers are supported.
|
| ispalindrome(N) |
function result = ispalindrome(N)
% ispalindrome: test if the number N (vpi or numeric, or a digit string as a vector) is a palindrome
% usage: result = ispalindrome(N)
%
% When N is a scalar (vpi or numeric), ispalindrome
% tests if the number is itself a palindrome. When
%
% When N is a vector, ispalindrome tests that the
% sequence it represents is a palindromic sequence.
%
% http://en.wikipedia.org/wiki/Palindrome
% http://en.wikipedia.org/wiki/Lychrel_number
%
% Arguments: (input)
% N - may be a scalar vpi or numeric integer,
% or ANY vector.
%
% Arguments: (output)
% result - (boolean) true or false, depending upon
% whether the number or sequence represents a
% palindrome.
%
%
% Example:
% ispalindrome(3234)
% ans =
% 0
%
% ispalindrome(vpi('122222212222221'))
% ans =
% 1
%
% ispalindrome('abcdefghihgfedcba')
% ans =
% 1
%
% ispalindrome([3 4 5 1 1 3 4 5])
% ans =
% 0
%
%
% See also: digits
%
%
% Author: John D'Errico
% e-mail: woodchips@rochester.rr.com
% Release: 1.0
% Release date: 4/22/09
% test the input
if nargin ~= 1
error('ispalindrome acceppts only one argument')
end
if isempty(N)
% empty propagates to empty
result = [];
elseif numel(N) > 1
% N must then be a vector. test if the vector
% itself is a palindromic one.
if ~isvector(N)
error('N may not be an array')
end
% N must have been a vector
N = N(:);
result = all(flipud(N(:)) == N);
else
% N was a scalar
% is it a vpi number?
if isa(N,'vpi')
d = digits(N);
result = all(fliplr(d) == d);
else
% N is a scalar, but not a vpi scalar
% N must be numeric
if ~isnumeric(N) || (N ~= round(N))
error('N must be integer')
end
% extract the digits
N = abs(N);
d = dec2base(N,10);
result = all(fliplr(d) == d);;
end
end
|
|
Contact us at files@mathworks.com