网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
02月24日漏签0天
c语言吧 关注:801,819贴子:4,376,381
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 1回复贴,共1页
<<返回c语言吧
>0< 加载中...

求素数用VC++6.0运行有问题,大于某个数就报错

  • 只看楼主
  • 收藏

  • 回复
  • 戈壁沙漠7132
  • 麻婆豆腐
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
当我的范围上限大于等于17660的时候,运行报错,不知道哪里有问题。。。
是VC对数组的大小有要求吗?
附源码:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
unsigned int *list; /*已发现的素数列表,为了保证输出表单的格式对齐,弃用前两个存储单元*/
unsigned int *prim;//已知的素数,将被输出至文件
/*计算min与max之间的数字是否为素数*/
unsigned int count=0;
int cal(unsigned int min,unsigned int max)
{
unsigned int i,j,r,s,t,cur,num; /*cur用以存储当前素数表的追加位置,s存储偏移量,t存储是否完成了跳跃,num存储素数表需要列出的素数个数,其它为临时变量*/
double a=clock(),b;/*统计耗时*/
unsigned int size=1024;
s=cur=2;t=0;
num=(int)sqrt((double)max);/*素数表只需要列到最大值的开平方就行*/
list=(unsigned int*)realloc(list,sizeof(int)*size);
prim=(unsigned int*)realloc(prim,sizeof(int)*size);
printf("%u到%u之间的素数有:\r\n",min,max);
i=5;/*跳过2,3的及其倍数校验*/
if(min<3)
{
if(max>=3)
{
printf("23");
prim[0]=2;
prim[1]=3;
count+=2;
}
else if(max==2)
{
printf("2");
prim[0]=2;
count++;
}
}
else if(min==3)
{
printf("3");
prim[0]=3;
count++;
}
while(i<=max)
{/*先完善素数表,并顺便枚举范围内的素数*/
r=1;
for(j=2;j<=num;j++)
{/*对于新的数字用已有的素数校验*/
if(j<cur)
{/*尚未完成素数表的遍历*/
if(i%list[j]==0)
{/*一旦能被整除,则不再向后判断,认定该数不是素数*/
r=0;
break;
}
}
}
if(r)
{/*输出新发现的素数*/
if(cur<=num)
{/*素数表尚不完整*/
if(cur>=size)
{/*当素数表空间不足时,动态扩展*/
size+=1024;
list=(unsigned int*)realloc(list,sizeof(int)*size);
}
if(count>=size)
{
prim=(unsigned int*)realloc(prim,sizeof(int)*(size+1024));
}
list[cur++]=i;
}
if(min<=i)
{/*当前的素数在求取范围内*/
printf("%u",i);
prim[count++]=i;
(count%5==0)?printf("\r\n"):printf("");/*每输出5个数字进行一次换行*/
}
else if(t==0&&i>num)
{/*当素数表就绪,但当前运算的数小于最小要求取的数时,进行跳跃*/
switch(min%6)
{/*判断min与2,3的公倍数的关系,据此决定跳跃幅度*/
case 1:
s=4;
I


  • 戈壁沙漠7132
  • 麻婆豆腐
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
直接忽视我了吗?
那vc++6.0对于数组大小有要求吗?


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1回复贴,共1页
<<返回c语言吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示