C#语言中关于质数的问题:

C#语言中关于质数的问题:
1.判断一个既定的正整数是否是质数;
如给定一个数int n=23;
下面为实现代码:
int n=23;
bool isFind=false;
for(int i=2;i<=n-1;i++)
{
if(n/i==0)
{
isFind=true;
break;
}
}
if(isFind)
{
Console.Write("不是质数");
}
else
{
Console.Write("是质数");
}
如果不是一个给定的正整数,而是让用户任意输入一个正整数,这种情况下只需要将
int n=23;变为int n=int.Parse(Console.ReadLine);

2.计算100-200之间所有的质数之和
int sum = 0;
//先定义一个变量sum用于累计质数的和,也是最终的输出结果,在开始还找到没有质数,和也就赋值为0;
for (int i = 100; i <= 200; i++)
{
//i的范围是100-200,判断每个数i是不是质数
bool isFind=false;
for (int j = 2; j <= i-1; j++)
{
if (i % j == 0)//满足该条件说明i是质数
{
isFind=true;
break;
}
}
if (!isFind)
{
sum =sum+ i;
}
}
Console.WriteLine("100-200之间的所有质数之和为:" + sum);

3.哥德巴赫猜想:任何一个大于2的偶数,都可以被分解为两个质数相加。
int number;
while (true)//这是一个死循环,只有当得到正确的输入才会结束,
正确的输入是指任意一个大于2的偶数;

{
Console.Write("请输入一个大于2的偶数:");
number=int.Parse (Console.ReadLine());
if(number <=2||number %2!=0)
{
Console.WriteLine("输入有误,按回车键后重新输入");
Console.ReadLine();
Console.Clear();
}
else
{
break;//已得到正确的输入,结束while循环;
}
}
int i, j=0;//任意一个大于2的偶数分解为数i和数j;
for( i=2;i<=number -2;i++)//先判断i是不是质数
{
j=number -i;
bool isFind=false;
for(int k=2;k<i;k++)
{
if(i%k==0)
{
isFind =true;
break;//满足if中的条件表示i不是质数,结束循环
}

}
if(isFind )
{
continue;//继续寻找下1个i
}
isFind =false;//最终找到1个是质数的i
for(int k=2;k<j;k++)//已经确定i是质数,下面判断j是不是质数;
{
if(j%k==0)
{
isFind=true;
break;
}
}
if(isFind)
{
//j不是质数,什么都不做,继续下一循环
}
else
{
break;//j是质数,结束循环;至此,已找到质数i和质数j;
}
}

string result=number +"="+i+"+"+j;
Console.WriteLine(result);
Console.ReadLine();

 

4.利用函数实现判断质数
//判断一个数是不是质数
static bool IsPrime(int n)
{
if(n<2)
return false;
for(int i=2;i<=n-1;i++)
{
if(n%i==0)
{
return false;
}
}
return true;
}
}
要调用该函数时只需要书写IsPrime(n),减少了重复代码,使代码简洁易读。

 

转载于:https://www.cnblogs.com/xiezz/p/7396682.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值