我编写了一个代码来查找第n个丑陋的数字(一个至少有一个素数因子大于5的数字),其中n是给定的输入。如果用户输入的内容少于240,我的程序运行良好。但是如果输入大于此,程序崩溃!我的问题是,如果这是一个耗时的问题,那么它应该花费时间,但为什么程序崩溃?我到处都使用了双倍,所以它可能不是可变容量的问题! 我的代码如下:
#include<stdio.h>
#include<math.h>
double primes[1000]={2,3,5};
int serial=3;
double next_prime()
{
double f=primes[serial-1]+2;
int count;
for(count=1;primes[count]<=(sqrt(f)+1) && count<serial;count++){
if(fmod(f,primes[count])==0){
f+=2;
count=1;
}
}
return primes[serial++]=f;
}
int main()
{
double ugly_serial=12,ugly_number=16,j;
int c,count,loop,input;
scanf("%d",&input);
while(ugly_serial<input)
{
loop=0;
for(c=3;primes[c-1]<=sqrt(ugly_number);c++){
j=next_prime();
}
for(count=3;count<c;count++){
if(fmod(ugly_number,primes[count])==0){
loop=1;
break;
}
}
if(loop==0){ugly_serial++;}
ugly_number++;
}
printf("%.0lf",ugly_number);
return 0;
}
答案 0 :(得分:0)
我编译并运行了你的代码。该程序适用于我尝试过的所有输入,包括56565。
您确定自己运行的是最近编译的程序版本吗?