幫小弟我檢查一下哪裡有問題
幫我檢查一下哪裡有問題
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
main()
{
int i,k,v,n,*b,t=0;
scanf("%d",&n);
b=(int *)malloc(sizeof(int)*n);
for(i=2;i<=n;i++)
b[i]=1;
v=(int)sqrt((double)n);
for(i=2;i<=v;){
k=i+i;
while(k<=n){
b[k]=0;
k+=i;
}
do
i++;
while(b[i]==0);
}
for(i=0;i<=n-1;i++){
if(b[i]==1){
t++;
printf("%d%c",i,9);
}
}
printf("\n%d\n",t);
system("pause");
return 0;
}
這是一個質數程式
有的時候會當掉!有時候又沒有問題
------解决方案--------------------
for(i=2;i <=n;i++)
b[i]=1; //越界了.这里..
------解决方案--------------------
b=(int *)malloc(sizeof(int)*n);
for(i=2;i <=n;i++)
b[i]=1;
数组越界了吧。申请了 n 个空间,却还有 i <= n
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
main()
{
int i,k,v,n,*b,t=0;
scanf("%d",&n);
b=(int *)malloc(sizeof(int)*n);
for(i=2;i<=n;i++)
b[i]=1;
v=(int)sqrt((double)n);
for(i=2;i<=v;){
k=i+i;
while(k<=n){
b[k]=0;
k+=i;
}
do
i++;
while(b[i]==0);
}
for(i=0;i<=n-1;i++){
if(b[i]==1){
t++;
printf("%d%c",i,9);
}
}
printf("\n%d\n",t);
system("pause");
return 0;
}
這是一個質數程式
有的時候會當掉!有時候又沒有問題
------解决方案--------------------
for(i=2;i <=n;i++)
b[i]=1; //越界了.这里..
------解决方案--------------------
b=(int *)malloc(sizeof(int)*n);
for(i=2;i <=n;i++)
b[i]=1;
数组越界了吧。申请了 n 个空间,却还有 i <= n