haskell列表理解(数论问题)
|
我试图在haskell中解决以下问题:
用(a ^ b找到最小的数b
mod 100)=每1个
gcd(a,100)= 1
我尝试了这个:
head[ b | a <- [1..], b <- [1..], (a^b `mod` 100) == 1, gcd a 100 == 1]
但这会得出1 ^ 1作为第一个解,这是不正确的,应该适用于每一个;例如,3 ^ 1不是解决方案。
我认为正确的解决方案是b = 20,但我希望在haskell中使用。
没有找到相关结果
已邀请:
4 个回复
赣借
其中(a ^ b mod 100)= a
[每个a]的gcd(a,100)= 1
澳绍能
联海
和函数在哪里返回列表中的所有元素是否为true。 (仍然无效,因为
是无限的,这意味着
会返回
或永远循环)。
吞睫素
在无限列表的情况下,这样会遇到问题。上面的第二个示例显示了无限列表中的一个变量将如何阻止另一个变量的更改,但是第三个示例显示了更改顺序可以解决此问题。 为了演示您当前的列表理解如何遍历
和
:
此问题类似于第二个示例。我不知道足够多的数论来帮助您进一步提供有效的解决方案,但这是实现过程中的根本问题。