永发信息网

c选取出100以上1000以内所有个位数字与十位数字之和被10除所得余数恰是百位数字的素数(如293)。C#

答案:2  悬赏:80  手机版
解决时间 2021-02-12 19:01
  • 提问者网友:遮云壑
  • 2021-02-11 22:55
c选取出100以上1000以内所有个位数字与十位数字之和被10除所得余数恰是百位数字的素数(如293)。C#
最佳答案
  • 五星知识达人网友:从此江山别
  • 2021-02-11 23:49
最快的代码是先进行判素处理。
 
取得1000以内的所有素数。
List GetAllPrimeNumber(int num)
{
     if(num<2) throw new Exception("必须是大于1的整数");
     List primenumber = new List();
     primenumber.Add(2);
    if(num<3) return primenumber;

    for(int s =3;s<=num;s+=2)
    {
         int k = (int)Math.Sqrt(s);
         //取出小于S开方的最大整数
        for(int i =0;i        {
             if(primenumber[i]>k)
             {
                   //是质数的情况
                  primenumber.Add(s);
                  break;
              }
            if(s%primenumber[i]==0)
                break;
        }
    }
    return primenumber;
}

该方法可以获得num内的所有素数。调用方法是
List allPrimeNum = GetAllPrimeNumber(1000);
即可获得1000以内的所有素数。目前这种方法绝对速度够快。 运行次数绝对最少。实现原因是将2,3存入list中,从4开始,依次用list中小于等于当前开方数的素数去除当前数,若均除不尽,则加入链表。以100为例,不需要从2到10,也不需要从2,3到9的质数,只须10以前的素数即可。原理是,因为质数为2,所以不须要再使用4,6,8,10等数字去试,若其中任意一个能除尽,那么2一定能除尽,3也同样,其实判素只需要用小于其开方的素数去试就可知道了!虽然在100以前讨不到什么便宜,但是到1000以后却能讨到大便宜。
 
接回你的问题,你的问题是求个数与和,将所有素数都求出来了,求个数与和还难么?使用lamabad表达式即可!
 
IENumerable result = allPrimeNum.Where(_Item => _Item>100 && _Item/100 == (_Item%10+(_Item%100)/10)%10);
 
该式会求出你所以要求的素数,不要说和与个数,它可以一个个地打印出来!
Item>100,表示在allPrimeNum中大于100的,_Item/100 == (_Item%10+(_Item%100)/10)%10相信你能看懂,它是说_item/100表示百位数._item%10表示的是个位数。而(_item%100)/10是十位数,也可以写作(_item/10)%10)。个数与10位相加后与10取模,所以后一个条件就是你表示的个位与十位相加取模与百位相同的条件。
 
那么你要的结果就是:
CN = result.Count();
SUM = result.Sum();

全部回答
  • 1楼网友:逃夭
  • 2021-02-12 00:41
private static void Test()
{
int CN = 0;
int SUM = 0;
for (int i = 100; i < 1000;i++ )
{
if ((i%10 + i/10%10)%10==i/100%10)
{
if (i是素数(自己查下方法吧))
{
CN++;
SUM += i;
}
}
}
}
给你查了一个判断素数的方法:
public bool primeNumber(int n)
{
bool b = true;
if (n == 1 || n == 2)
b = true;
else
{
int sqr = Convert.ToInt32(Math.Sqrt(n));
for (int i = sqr; i > 2; i--)
{
if (n % i == 0)
{
b = false;
}
}
}
return b;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯