Integer check with a symbolic variable

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 件のコメント

Fangjun Jiang
Fangjun Jiang 2019 年 12 月 12 日
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 2019 年 12 月 12 日
編集済み: Yuechuan Chen 2019 年 12 月 12 日
Oh sorry I meant p-1/2 not p...

サインインしてコメントする。

 採用された回答

Walter Roberson
Walter Roberson 2019 年 12 月 12 日

1 投票

if mod(p,1) == 0

1 件のコメント

Yuechuan Chen
Yuechuan Chen 2019 年 12 月 13 日
Thank you! Didn't think of this erhh

サインインしてコメントする。

その他の回答 (1 件)

Fangjun Jiang
Fangjun Jiang 2019 年 12 月 13 日

1 投票

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.

1 件のコメント

Yuechuan Chen
Yuechuan Chen 2019 年 12 月 13 日
Of course! Thank you. Didn't realise.

サインインしてコメントする。

カテゴリ

Community Treasure Hunt

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

Start Hunting!

Translated by