我用威尔逊定理编的c程序——求1-1000的所有素数,各位帮我检查一下,谢谢

来源:百度知道 编辑:UC知道 时间:2024/05/01 19:23:29
用威尔逊定理编的c程序——求1-1000的所有素数2007-12-28 19:23初等数论里的“威尔逊定理”说:要使正整数p为素数,必须且只须p能整除(p-1)!+1。我这个程序就是用这个定理编的。本人是c语言的自学者,请多指教!
#include<stdio.h>
int main
{
long a,b,c; b=1;
for(a=2;a<=1000;a++)
{b=b*a-b};
c=b+1;
if (a%c==0) printf("%d\n", a);
}
这个是我自己编的,还没在电脑上试过

有如下问题
1 定理你没看懂,那句话的意思是 ((p-1)!+1)%p==0
!表示阶乘,数据会增长飞快,所以实际的计算一般容纳不下.
计算量很大.
2 程序 main() 缺少()
b=b*a-b; 分号放里面.
3 程序我执行了,结果是1001,问题大大的 !

楼主要求出阶乘才可以呀。---此问题只在考“递归。”
参考一下我的程序。如果可以,结贴吧。
-------------------vc6.0测试通过----------------
#include <stdio.h>

long int factorial(int n)
{/*递归求阶乘。*/
long int lResult=0;
if(n<0)
{
printf("非法的数。");
return -1;
}
else
{
if(n==0)
return 1;
else
{
lResult=n*factorial(n-1);
return lResult;
}
}
}

void main()
{
int i;
long int result=0;

//printf("%d\n",factorial(4));
for(i=1;i<10;++i)
{
result=factorial(i-1);/*用递归求阶乘*/
if(((result+1)%i)==0)
printf("%d\n",i);

}

}