我理解模数17/12 = 5.
为什么4+17 % 2-1价值4,(4+17) % 2-1价值是0?
我需要检查c中数字的可分性.如何在C中使用模数operatpr来检查一个数字是否可以被另一个数字整除?我试过这样做:
if (file_int % 3) {
printf("Hoppity \n");
}
Run Code Online (Sandbox Code Playgroud)
虽然file_int等于9,但它不起作用.
我做错了什么?
谢谢
有a/b mod m = (a mod m)/(b mod m)吗?
我试图为非常大的数字找到nCr mod m.如果a/b mod m = (a mod m)/(b mod m)那时认为我会解决我的问题.
这是项目欧拉.我正在使用使用阶乘的nCr公式.
我遇到了编译器这个有趣的行为:
如果我有
public int GetInt()
{
Random rnd = new Random();
double d = rnd.NextDouble();
int i = d % 1000;
return i;
}
Run Code Online (Sandbox Code Playgroud)
我得到一个错误:
Cannot implicitly convert type 'double' to 'int'. An explicit conversion exists (are you missing a cast?)
这实际上有意义的,因为1000可以是一个double,而结果modulo操作可能是double为好.
但在将代码更改为:
public int GetInt()
{
Random rnd = new Random();
double d = rnd.NextDouble();
int i = d % (int)1000;
return i;
}
Run Code Online (Sandbox Code Playgroud)
错误仍然存在.
据我所知,编译器拥有所有信息,以确定modulo运算符的输出将是一个int,所以为什么不编译?
我遇到的问题是x =(16807 xk)%65536
即16807k≡x(mod 65536)
我需要计算k知道x.到目前为止,我的最大努力是一种蛮力.有没有数学方法来计算k?如果不是我的当前代码的任何优化将不胜感激.
t = x;
while ( t += 15115 ) // 16807k = 65536n + x - this is the n
{
if (t%16807 == 0)
return t/16807;
}
return x;
Run Code Online (Sandbox Code Playgroud)
编辑:更改+ =到15115
如果我们被告知我们不能使用模数运算符,那么我们如何取出数字的最后一位数.
例如,
N=2345,我们应该得到5.
尝试提供通用解决方案.
我找到了什么:
N- N/ 10 * 10
Run Code Online (Sandbox Code Playgroud) 有两种简单的方法可以检查一个月是否是季度的第一天。
第一种方式:
If month = 3 OrElse month = 6 OrElse month = 9 OrElse month = 12 Then
'do stuff
End If
Run Code Online (Sandbox Code Playgroud)
第二种方式:
If month Mod 3 = 0 Then
'do stuff
End If
Run Code Online (Sandbox Code Playgroud)
对我来说,它们都具有同等的可读性。尽管它们在功能上有所不同,但只要已知月份在 1 到 12 之间(含 1 和 12),它们的逻辑就相同。应该使用哪种方式?
在最坏的情况下,如果month = 12,则执行四次比较。进行模数和一次比较是否更快(并不是说这是显着的性能差异)?
我知道,两个数相除时都会计算出余数。Mod可以使用不具有相同值的数字进行计算。
但是,如果我有这个例子:
b = mod(23,5)
b = 3
Run Code Online (Sandbox Code Playgroud)
答案是三个。要获得值3,后台进行的数学运算是什么?
我正在用 java 编写一个 RSA 解密原型。这只是为了展示它对学校的作用,这就是为什么我尽量保持简单。但是当我进入解密部分时,我必须使用公式:
c = m^e % n。
出于测试目的,我尝试使用m = "1010"(因为我从我的程序中将它作为字符串获取)、e = 55、n = 361来做到这一点。这应该给我 345 作为 c(在 Windows 计算器中测试)。我得到的结果是:
Math.pow(Integer.parseInt("1010"), 55) % 361 // 115.0
BigDecimal b = BigDecimal.valueOf(Math.pow(Integer.parseInt("1010"),55));
(b.remainder(BigDecimal.valueOf(361))).doubleValue() // 300.0
Math.pow(Integer.parseInt("1010"), 55) % 361 // 340
Run Code Online (Sandbox Code Playgroud)
请告诉我我错在哪里或如何解决这个问题。提前致谢。
#include <stdio.h>
int main (void)
{
int x = 10^2;
long a = 4000465006540123; //(16 places)
long b = 4000465006540123 % x;
printf("%li\n", b);
}
Run Code Online (Sandbox Code Playgroud)
当我运行代码时(它正确编译),代码打印出“3”。难道它不应该打印出“23”,因为 x 是 100,而不是 10?
modulus ×10
c ×3
math ×3
java ×2
algebra ×1
bigdecimal ×1
c# ×1
c++ ×1
expression ×1
hash ×1
integer ×1
matlab ×1
optimization ×1
performance ×1
vb.net ×1