急大奇整数的素性查验

急!!!大奇整数的素性检验
关于费马素性检验,米勒-拉宾素性检验,solovay-stassen素性检验算法的c语言算法的实现怎么做?请高手帮帮忙!
我写了一个费马素性检验算法的,在编译连接都没有错,可是不能执行!!!!!要怎么改呢?
费马素性检验:
#include"iostream.h"
#include"time.h"
#include"stdlib.h"
#include"math.h"
#include"stdio.h"

#define MAX  100000
int isprime[MAX];
int p[MAX],np;

int powmod( int b, int n, int k )
{  int d;
    for (b %= k; n > 0; n>>= 1)
    {  if(n & 1)
        d = (d*b)%k;
        b = (b*b)%k;
    }
    return d;
}
void prime(int n)
{int np=0;int i,j;
for(i=2;i<=n;i++)
{if(!isprime[i])
p[np++]=i;
for(j=0;j<np&&p[j]*i<=n;j++)
{isprime[p[j]*i]=1;
if(i%p[j]==0) break;
}
}
}

int fermat(int n)
{int i;
for(i=0;i<np;i++)
{if(powmod(p[i],n-1,n)!=1)
return 0;
}
return 1;
}

main()
{int n,i;
printf("请输入大奇整数:n=");
scanf("%d\n",&n);

if(fermat(n)==1)
printf("n是素数!\n");
else  printf("n是合数!\n");
}

------解决方案--------------------
scanf("%d\n",&n);
果然。。。scanf里没有\n的使用。。。。
------解决方案--------------------
另外,你本身的算法也有问题. 你需要仔细看下.  改了之后至少能出结果了.