标题:大佬们,这个是判断四位可逆素数的代码,我想加个计数器,加不了?
只看楼主
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
开个size为[1000]的散列表嘛~
筛法快速求素数后直接逆序判断并标记有多少个就可以了~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2018-02-03 12:01
william2011
Rank: 1
来 自:金星
等 级:新手上路
帖 子:35
专家分:0
注 册:2018-1-23
得分:0 
是itoa在闹鬼。修改后的程序如下,仅针对以上谈及错误,其他漏洞未关注:
int main(){
     int i,j,k,l,m,p;
     string str;  //存放4位数字的字符串
     char num[4];
     char val[4];
     for(i = 1000;i <= 9999;i++)
     {
         for(j = 2;j <= i;j++)
         {
             if(i % j == 0)
                 break;
         }
         if(j >= i)
         {   
             //itoa(i,num,10); //有漏洞的操作
             str = to_string(i);
             for(size_t idx=0; idx<str.size(); ++idx){  //遍历字符串,取出各个字符,现在为4个
                 num[idx]=str[idx];                 
             }
             for(l = 0,k = 3;k >= 0;k--,l++)
             {
                 val[l] = num[k];
             }
             p=stoi(val);  //p = atoi(val);
             for(m = 2;m <= p;m++)
             {
                 if(p % m == 0)
                     break;
             }
             if(m >= p)
             {
                 i = atoi(num);  
                 printf("%d ",i);                 
             }
         }   
     }
     printf("\n");
 }
2018-02-04 05:57
william2011
Rank: 1
来 自:金星
等 级:新手上路
帖 子:35
专家分:0
注 册:2018-1-23
得分:0 
实测结果:
2018-02-04 05:59
william2011
Rank: 1
来 自:金星
等 级:新手上路
帖 子:35
专家分:0
注 册:2018-1-23
得分:0 
咦,怎么发错地方?
2018-02-04 06:03
william2011
Rank: 1
来 自:金星
等 级:新手上路
帖 子:35
专家分:0
注 册:2018-1-23
得分:0 
是itoa在闹鬼。修改后的程序如下,仅针对以上谈及错误,其他漏洞未关注:
int main(){
      int i,j,k,l,m,p;
      string str;  //存放4位数字的字符串
     char num[4];
      char val[4];
      for(i = 1000;i <= 9999;i++)
      {
          for(j = 2;j <= i;j++)
          {
              if(i % j == 0)
                  break;
          }
          if(j >= i)
          {   
              //itoa(i,num,10); //有漏洞的操作
             str = to_string(i);
              for(size_t idx=0; idx<str.size(); ++idx){  //遍历字符串,取出各个字符,现在为4个
                 num[idx]=str[idx];                 
              }
              for(l = 0,k = 3;k >= 0;k--,l++)
              {
                  val[l] = num[k];
              }
              p=stoi(val);  //p = atoi(val);
              for(m = 2;m <= p;m++)
              {
                  if(p % m == 0)
                      break;
              }
              if(m >= p)
              {
                  i = atoi(num);  
                  printf("%d ",i);                 
              }
          }   
      }
      printf("\n");
  }
2018-02-04 06:04
木下瞳
Rank: 1
等 级:新手上路
帖 子:37
专家分:6
注 册:2017-9-24
得分:0 
回复 20楼 sky8558
谢谢
2018-02-05 13:17



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-484586-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.467437 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved