c# 计算1-100之间的所有整数的和
时间: 2024-03-26 12:38:09 浏览: 15
可以使用循环来计算1-100之间的所有整数的和,以下是C#代码示例:
```
int sum = 0;
for (int i = 1; i <= 100; i++)
{
sum += i;
}
Console.WriteLine("1-100之间所有整数的和为:" + sum);
```
在以上代码中,我们首先定义了一个整数变量 `sum`,用于存储计算结果。然后使用 `for` 循环从1到100遍历所有整数,每次将当前的整数累加到 `sum` 中。最后输出计算结果。
相关问题
c#计算1-100之间所有三倍数的和
你可以使用循环结合条件判断来计算1-100之间所有三倍数的和,以下是C#代码示例:
```
int sum = 0;
for (int i = 1; i <= 100; i++)
{
if (i % 3 == 0)
{
sum += i;
}
}
Console.WriteLine("1-100之间所有三倍数的和为:" + sum);
```
在以上代码中,我们同样定义了一个整数变量 `sum`,用于存储计算结果。然后使用 `for` 循环从1到100遍历所有整数,每次判断当前的整数是否是三倍数,如果是则将其累加到 `sum` 中。最后输出计算结果。
使用C#实现Solovay-Staassen算法
Solovay-Staassen算法是一种用于判断一个大整数是否为素数的算法,其基于Jacobi符号的性质。下面是使用C#实现Solovay-Staassen算法的示例代码:
```csharp
using System;
using System.Numerics;
class SolovayStassen
{
private static int JacobiSymbol(BigInteger a, BigInteger n)
{
if (a == 0) return 0;
if (a == 1) return 1;
int e = 0;
while (a % 2 == 0)
{
a /= 2;
e++;
}
int s;
if (e % 2 == 0 || n % 8 == 1 || n % 8 == 7)
{
s = 1;
}
else
{
s = -1;
}
if (a == 1) return s;
if (n % 4 == 3 && a % 4 == 3)
{
s = -s;
}
return s * JacobiSymbol(n % a, a);
}
private static BigInteger ModPow(BigInteger x, BigInteger y, BigInteger m)
{
BigInteger r = 1;
while (y > 0)
{
if (y % 2 == 1)
{
r = (r * x) % m;
}
y /= 2;
x = (x * x) % m;
}
return r;
}
public static bool IsPrime(BigInteger n, int k)
{
if (n == 2 || n == 3)
{
return true;
}
if (n < 2 || n % 2 == 0)
{
return false;
}
for (int i = 0; i < k; i++)
{
BigInteger a = RandomBigInteger(2, n - 1);
BigInteger x = JacobiSymbol(a, n) % n;
BigInteger y = ModPow(a, (n - 1) / 2, n);
if (x == 0 || y != x)
{
return false;
}
}
return true;
}
private static BigInteger RandomBigInteger(BigInteger min, BigInteger max)
{
Random random = new Random();
int maxBytes = max.ToByteArray().Length;
byte[] bytes = new byte[maxBytes];
BigInteger result;
do
{
random.NextBytes(bytes);
bytes[bytes.Length - 1] &= (byte)0x7F; // make sure most significant bit is not set
result = new BigInteger(bytes);
}
while (result < min || result > max);
return result;
}
}
```
该代码中包含以下方法:
- `JacobiSymbol(a, n)`:计算Jacobi符号。
- `ModPow(x, y, m)`:计算x的y次方对m取模。
- `IsPrime(n, k)`:使用Solovay-Staassen算法判断n是否为素数,k为测试次数。
- `RandomBigInteger(min, max)`:生成一个介于min和max之间的随机正整数。
要使用该代码,可以通过以下方式调用:
```csharp
BigInteger n = new BigInteger("12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123");
int k = 10;
bool isPrime = SolovayStassen.IsPrime(n, k);
if (isPrime)
{
Console.WriteLine(n + " is prime");
}
else
{
Console.WriteLine(n + " is composite");
}
```
上述代码将使用Solovay-Staassen算法进行10次测试,判断n是否为素数。