clpfd 不是平方数
Clpfd not a square number
是否可以对整数进行约束以表明它不能是(完美)平方数?
我有:
square(Square):- N#>0, Square #= N*N.
如何定义notsquare(Notsquare):- ...
我的第一个想法是 P*P =Q*Q*Notsquare
和 Remainder #>0, Remainder #= P rem Q.
但是 P 和 Q 需要能够是非整数,所以这不起作用。
怎么样
notSquare(S):- N #> 0, R #>0, R #< 2*N+1, S #= N*N+R.
?
如果 S > 0
应该可以工作;如果您也需要使用负数,我想您可以将其修改为
notSquare(S):- S #> 0, N #> 0, R #>0, R #< 2*N+1, S #= N*N+R.
notSquare(S):- S #< 0, SM #= -S, notSquare(SM).
是否可以对整数进行约束以表明它不能是(完美)平方数?
我有:
square(Square):- N#>0, Square #= N*N.
如何定义notsquare(Notsquare):- ...
我的第一个想法是 P*P =Q*Q*Notsquare
和 Remainder #>0, Remainder #= P rem Q.
但是 P 和 Q 需要能够是非整数,所以这不起作用。
怎么样
notSquare(S):- N #> 0, R #>0, R #< 2*N+1, S #= N*N+R.
?
如果 S > 0
应该可以工作;如果您也需要使用负数,我想您可以将其修改为
notSquare(S):- S #> 0, N #> 0, R #>0, R #< 2*N+1, S #= N*N+R.
notSquare(S):- S #< 0, SM #= -S, notSquare(SM).