标题:求一个十进制300位的质数
只看楼主
etsunny
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2007-10-11
 问题点数:0 回复次数:14 
求一个十进制300位的质数

我用的是数组,可是做除法的算法没有解决

搜索更多相关主题的帖子: 质数 十进制 
2007-11-08 22:52
qq95620412
Rank: 1
等 级:新手上路
帖 子:81
专家分:0
注 册:2007-11-5
得分:0 
你可以模拟小学生做除法的方法与过程。

人生路难走,转眼已白头。伤心望远山,黯然下小楼。
2007-11-09 09:01
qq95620412
Rank: 1
等 级:新手上路
帖 子:81
专家分:0
注 册:2007-11-5
得分:0 
还有就是利用减法来做循环。

如 1003/5

1003-5=998 商 1
998-5=993 商 1+1=2
993-5=988 商 2+1=3
。。。。。。
。。。。。,
13-5=8 商 198+1=199
8-5=3 商 199+1=200
3<5 停止运算 商200 余3

人生路难走,转眼已白头。伤心望远山,黯然下小楼。
2007-11-09 09:05
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
得分:0 
LS的做法是不可取的.
有除法为什么不用呢.
1003/5
1/5=0...1
10/5=2
0/5=0
3/5=0...3

倚天照海花无数,流水高山心自知。
2007-11-09 09:22
作弊
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2007-11-3
得分:0 
2^p -1
p是一个质数

2^11-1 = 2047
2^2047-1=
1.6158503035655503650357438344335e+616
完工

[此贴子已经被作者于2007-11-9 9:40:33编辑过]

2007-11-09 09:37
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
得分:0 

别想的 这么简单,要的是300位精确值,要不然怎么确定.


倚天照海花无数,流水高山心自知。
2007-11-09 11:11
qq95620412
Rank: 1
等 级:新手上路
帖 子:81
专家分:0
注 册:2007-11-5
得分:0 
4楼 顶了,

你说的意思就是2楼的意思。

不过比我的表达明晰多了。

再顶。

人生路难走,转眼已白头。伤心望远山,黯然下小楼。
2007-11-09 16:13
qq95620412
Rank: 1
等 级:新手上路
帖 子:81
专家分:0
注 册:2007-11-5
得分:0 

不过有一个问题就是 你如何做

100000000000000000000000000000078954631/123456789123456789123456789

这样的除法呢?


人生路难走,转眼已白头。伤心望远山,黯然下小楼。
2007-11-09 16:14
etsunny
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2007-10-11
得分:0 

这是我写的源代码,再这里发下,太混乱了,不知道怎么说好,可能不是这样算的

#include<stdio.h>
#include<math.h>
#define N 10000
#define M N/2+1

main ()
{
int i=0,j=0,k=0,l=0,m=0,n=0;
int a[N]={0};
int b[M]={0};
int c[N]={0};
int jiayi(int b[M],int i);
int yushu(int a[N],int b[M],int n,int m);

/*输出到文件D:\iloveyou\1中*/
/*
for(l=0;l<N;l++)
{
a[l]=9;
fprintf(D:\iloveyou\1 * fp,"%d",a[N-1-l]);
} */

/*求N位的大质数,用数组表示和运算*/

for(a[N]=2;a[0]<=9;jiayi(a[N],N))
{
for(b[M]=1;b[0]<1;jiayi(b[M],M))
{
if (yushu(a[N],b[M],n,m)==0)
break;
}
if(b[0]>0)
for(l=0;l<N;l++)
{
c[l]=a[l];
}
}
for(i=0;i<N;i++)
{
printf("%d\n",c[i]);
}


}

/* i=m; 设b[0]为最高位,b[M]为个位,自增1;*/
jiayi(int b[M],int i)
{
b[i]++;
if (b[i]>9)
b[i]=0;
i--;
jiayi(b[M],i);
reaturn (b[M],i);
}

/*a[N]除以b[M],按各个位进行计算,即n位整数除以m位整数,取余*/
yushu(int a[N],int b[M],int n,int m)
{
/* int n=0,m=1; */
if (n<m)
{
if (a[n]>b[m])
{
a[n]=a[n]-b[m];
yushu(a[N],b[M],n,m);
}
else if (a[n]=b[m])
{
n++;
m++;
yushu(a[N],b[M],n,m);
}
else if (a[n]<b[m])
{
n++;
yushu(a[N],b[M],n,m);
}
}
else
{
if (a[n]>b[m])
{
a[n]=a[n]-b[m];
yushu(a[N],b[M],n,m);
}
else if (a[n]=b[m])
{
n++;
m++;
if (m<M)
yushu(a[N],b[M],n,m);
reaturn (0);
}
else if (a[n]<b[m])
{
reaturn (1);
}
}

}


圣火从希腊蔓延,带着普罗米修斯的祝愿
2007-11-10 17:36
etsunny
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2007-10-11
得分:0 
编译没有通过

圣火从希腊蔓延,带着普罗米修斯的祝愿
2007-11-10 17:36



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-184661-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023560 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved