当前位置: 首页 > 编程笔记 >

在C ++中给定范围内x ^ 2 = 1(mod p)的解的计数

华欣怡
2023-03-14
本文向大家介绍在C ++中给定范围内x ^ 2 = 1(mod p)的解的计数,包括了在C ++中给定范围内x ^ 2 = 1(mod p)的解的计数的使用技巧和注意事项,需要的朋友参考一下

给定整数x和p。目的是找到等式-x 2 = 1(mod p)的解数,以使x处于[1,N]范围内。

我们将通过从1遍历到N并将每个数字作为x来检查(x * x)%p == 1。如果是,则增加计数。

让我们通过示例来理解。

输入-n = 5,p = 2

输出-解决方案数-3

说明-介于1到5之间。

12=1%2=1, count=1
22=4%2=0, count=1
32=9%2=1, count=2
42=16%2=0, count=2
52=25%2=1, count=3
Total number of solutions=3.

输入-n = 3,p = 4

输出-解决方案数-2

说明-介于1到3之间。

12=1%4=1, count=1
22=4%4=0, count=1
32=9%4=1, count=2
Total number of solutions=2

以下程序中使用的方法如下

  • 我们取两个变量n和p。

  • 函数solutionsCount(int n,int p)接受参数n和p并返回方程式的解数:x 2%p == 1(或x 2 = 1(mod p))。

  • 从x = 1到x = n,检查x * x == 1,如果是,则递增计数。

  • 在循环结束时,count将具有解决方案的数量。

  • 返回计数作为结果。

示例

#include<bits/stdc++.h>
using namespace std;
int solutionsCount(int n, int p){
   int count = 0;
   for (int x=1; x<=n; x++){
      if ((x*x)%p == 1)
         { ++count; }
   }
   return count;
}
int main(){
   int n = 8, p = 3;
   cout<<"解决方案数:"<<solutionsCount(n, p);
   return 0;
}

输出结果

如果我们运行上面的代码,它将生成以下输出-

解决方案数: 6
 类似资料:
  • 本文向大家介绍在C ++中计算给定范围内的阶乘数,包括了在C ++中计算给定范围内的阶乘数的使用技巧和注意事项,需要的朋友参考一下 给定范围是从变量保存的整数值开始,比如说从开始直到变量结束,而任务是计算给定范围内可用的阶乘数的总数。 什么是阶乘数 数字的阶乘是通过将数字中的数字相乘,同时将数字的值减1来计算的。它由符号“!”表示 即0!,1!,2!,3!,5!,....等 0阶乘!和1!始终为1

  • 本文向大家介绍计算C ++中给定范围内的最小元素数,包括了计算C ++中给定范围内的最小元素数的使用技巧和注意事项,需要的朋友参考一下 我们得到了一个大小为N的整数数组。变量L和R定义了一个介于1和N之间的范围。目标是找到位于范围L和R中的最小元素数,使得L> = 1且R <= N. 我们将遍历位于范围L和R中的元素并找到最小的元素,以实现此目的。 同样,遍历范围L和R的元素,如果任何元素等于在步

  • 假设您有一个间隔列表,例如[(0 4),(1 3),(2 5),(2 6)]。此列表未排序。然后给您一个范围,如[1 5]。您必须返回适合范围内的间隔数。在这个问题中,它将返回2。((1 3)和(2 5)) 间隔列表保持不变,但我们最多得到100000个查询,每个查询由一个范围组成。对于每个范围查询,我们必须返回适合其中的间隔数。 在研究之后,我读到了间隔树。但是,您只能查询与任何给定范围重叠的间

  • 我正在尝试编写一个Heap排序方法,它只在传入方法的给定范围内执行排序。传入的范围是低和高,这些值对应于堆中的值,而不是堆的索引。例如,输入数组可能是:28 10 49 20 59 61 17,如果low=49,high=61,Heap排序后的结果数组将看起来像这样:28 10 20 49 59 61 17。范围之外的值保持不变。我已经有了一个工作的Heap排序方法,但我的问题是如何修改这个方法以

  • 本文向大家介绍C#生成给定范围内的随机整数,包括了C#生成给定范围内的随机整数的使用技巧和注意事项,需要的朋友参考一下 示例 生成一个介于minValue和之间的随机数maxValue - 1。            

  • 本文向大家介绍使用C ++ STL打印给定范围内的质数,包括了使用C ++ STL打印给定范围内的质数的使用技巧和注意事项,需要的朋友参考一下 它是在给定范围内打印质数的程序。 演算法 示例 输出结果