So I have:
s=sym('10517669');
p=nextprime(8*(S^4));
if float((p-1)/2)==(p-1)/2
...
end
I know float only works for single&double-precision, but p is so large I have to use the symbolic toolbox because it don't want to lose precision.
How could I resolve this?
THANKS

2 commentaires

Fangjun Jiang
Fangjun Jiang le 12 Déc 2019
p is accurately represented using sym object in your code. You know p is an integer from theory. What do you try to do? double(p) or single(p) can't represent p without precision loss.
Yuechuan Chen
Yuechuan Chen le 12 Déc 2019
Modifié(e) : Yuechuan Chen le 12 Déc 2019
Oh sorry I meant p-1/2 not p...

Connectez-vous pour commenter.

 Réponse acceptée

Walter Roberson
Walter Roberson le 12 Déc 2019
if mod(p,1) == 0

Plus de réponses (1)

Fangjun Jiang
Fangjun Jiang le 13 Déc 2019

1 vote

If you want to check whether (p-1)/2 is an integer, then check whether p is an odd number. But since p is a prime number, it seems p is always odd except that p==2.

Catégories

En savoir plus sur Symbolic Math Toolbox dans Centre d'aide et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by