here it showing segmentation fault....how can i allocate 10^9 memory location
Code:
#include<cmath>
#include<stdlib.h>
#include<stdio.h>
//#define MAXSIZE 1000000000
int flag=0;
int flag1=0;
void prime(int n);
void pow2(int n);
int main()
{
long long int n,k,g,sum=0,h;
//int MAXSIZE=100000000;
//long long int f[100000000];
int *f;
f=( int*)malloc(sizeof( int)*1000000000);
//printf("entre the no");
f[0]=0;
scanf("%lld",&n);
//k=n;
for(g=1;g<=n;g++)
{
k=g;
if(g==1 || g==2)
{
f[g]=1;
//printf("f[g]=%d\n",f[g]);
}
else{
pow2(g);
if(flag1==1){
//printf("pow\n");
f[g]=1;
}
else if(k%2==1)
f[g]=g;
else{
while(k%2!=1)
{
k=k/2;
}
f[g]=k;
}
//printf("f[g]=%d\n",f[g]);
}
}
for(h=1;h<=n;h++)
{
sum=sum+f[h];
}
printf("%lld\n",sum);
return(0);
}
/*void prime(int n)
{
int i,z;
for (i=2;i < n;i++)
{
if(n%i==0)
z=1;
}
if(z== 1)
flag=1;
//printf("not prime \n");
else
flag=0;
//printf("prime\n");
}*/
void pow2(int n)
{
int d=0,p=0,m;
m=n;
while(n/2!=0)
{
n=n/2;
d++;
}
p=pow(2,d);
if(p==m)
flag1=1;
else
flag1=0;
}