//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "slnum_p.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
slnum a,b,c;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
//---------------从string类中取出字符串转换为char * -------------------------------
char * strtoa(String ss)
{
char *sa;
sa=new char[strlen(ss.c_str())+1];
strcpy(sa,ss.c_str() );
return sa;
}
/*-----------------------------------------------------------------------
版权所有:贵州省天柱县二中 罗国文,邮编:556600,Email:xuefu998@yahoo.com.cn
本程序提供了一种关于素数判定的新算法,以这些基本函数为基础,可帮助我们
处理关于素数的许多命题。
版权声明:在您使用和推广本程序时尊重作者版权,不准在不经许可的情况下发表
-------------------------------------------------------------------------*/
slnum Test_1(slnum x) //求模2的倍数
{
slnum n;
n=x/2;
return n;
}
int Test_2(slnum x) //判断x的余数,返回值{0,1}
{
int k;
k=x.sl[0]%2;
return k;
}
int Test_P(slnum n) //P素性检验
{
slnum m("1");
slnum M;
M=(n-1)/3;
for(m=1;(m<=M);m=m+1) {
if(n%(m*2+1)==m) return 0;
}
return 1;
}
//数x的素性检验,x为素数返回1,否则为0
int Test_X(slnum x)
{
if (Test_2(x)==0) return 0;
if (x.arr_n ==1&&atol(x.soure )==1) return 0;
slnum n;
n=Test_1(x);
return (Test_P(n));
}
/*
void Out_X(slnum a,slnum b) //输出[a,b]间的素数
{ slnum x;
Form1->Memo1->Lines->Clear();
if (a.arr_n ==1&&a.sl[0]<3) Form1->Memo1->Lines->Append('2');
if (a.arr_n ==1&&a.sl[0]<5) Form1->Memo1->Lines->Append('3');
for(x=a;x<=b;x=x+1)
{ if(Test_X(x)==1) Form1->Memo1->Lines->Append(x.soure );}
}
void Out_N1(slnum a,slnum b) //输出[a,b]间使6n+1为素的n值
{ slnum n;
for(n=a;n<=b;n=n+1)
{ if(Test_P(n,1)==1) cout<<n.soure <<endl;}
}
void Out_N_1(slnum a,slnum b) //输出[a,b]间使6n-1为素的n值
{ slnum n;
for(n=a;n<=b;n=n+1)
{ if(Test_P(n,-1)==1) cout<<n.soure<<endl;}
}
//输出[a,b]间的孪生素数
void Out_2P(slnum a,slnum b)
{
slnum n,n1,n2;
n1=Test_1(a);
n2=Test_1(b);
for (n=n1;n<=n2;n=n+1)
if(Test_P(n,-1)*Test_P(n,1)==1)
cout<<"["<<n.soure<<":("<<n*6-1<<" , "<<n*6+1<<")]"<<endl;
}
//求出任意的大于4的整数m为中心的第一对素数
int Out_Q(slnum m)
{
slnum S;int s;
slnum n, k;
n=Test_1(m);
S=(m%6);
s=S.sl[0];
if(n==0)return 0 ;
switch (s) {
case 5 :
for(k=0;k<n;k=k+1)
{if(Test_P(n+k,-1)*Test_P(n-k,-1)==1)
{ cout<<"["<<m*2<<":("<<(n+k)*6-1<<" , "<<(n-k)*6-1<<")]"<<endl;
return 0;}
}
cout<<"Not find this number!!"<<endl;
case 4 :
for(k=0;k<n;k=k+1)
{if(Test_P(n+1+k,1)*Test_P(n-k,1)==1)
{ cout<<"["<<m*2<<":("<<(n+1+k)*6+1<<" , "<<(n-k)*6+1<<")]"<<endl;
return 0;}
if(Test_P(n+k,1)*Test_P(n+1-k,1)==1)
{ cout<<"["<<m*2<<":("<<(n+k)*6+1<<" , "<<(n+1-k)*6+1<<")]"<<endl;
return 0;}
}
cout<<"Not find this number!!"<<endl;
case 3 :
for(k=0;k<n;k=k+1)
{if(Test_P(n+1+k,1)*Test_P(n-k,-1)==1)
{ cout<<"["<<m*2<<":("<<(n+1+k)*6+1<<" , "<<(n-k)*6-1<<")]"<<endl;
return 0;}
if(Test_P(n+k,1)*Test_P(n+1-k,-1)==1)
{ cout<<"["<<m*2<<":("<<(n+k)*6+1<<" , "<<(n+1-k)*6-1<<")]"<<endl;
return 0;}
if(Test_P(n+1+k,-1)*Test_P(n-k,1)==1)
{ cout<<"["<<m*2<<":("<<(n+1+k)*6-1<<" , "<<(n-k)*6+1<<")]"<<endl;
return 0;}
if(Test_P(n+k,-1)*Test_P(n+1-k,1)==1)
{ cout<<"["<<m*2<<":("<<(n+k)*6-1<<" , "<<(n+1-k)*6+1<<")]"<<endl;
return 0;}
}
cout<<"Not find this number!!"<<endl;
case 2 :
for(k=0 ; k < n ; k=k+1)
{if(Test_P(n+1+k,-1)*Test_P(n-k,-1)==1)
{ cout<<"["<<m*2<<":("<<(n+1+k)*6-1<<" , " <<(n-k)*6-1<<")]"<<endl;
return 0;}
if(Test_P(n+k,-1)*Test_P(n+1-k,-1)==1)
{ cout<<"["<<m*2<<":("<<(n+k)*6-1<<" , "<<(n+1-k)*6-1<<")]"<<endl;
return 0;}
}
cout<<"Not find this number!!"<<endl;
case 1 :
for(k=0;k<n;k=k+1)
{if(Test_P(n+k,1)*Test_P(n-k,1)==1)
{cout<<"["<<m*2<<":("<<(n+k)*6+1<<" , "<<(n-k)*6+1<<")]"<<endl;
return 0; }
}
cout<<"Not find this number!!"<<endl;
case 0 :
for(k=0;k<n;k=k+1)
{if(Test_P(n+k,1)*Test_P(n-k,-1)==1)
{ cout<<"["<<m*2<<":("<<(n+k)*6+1<<" , "<<(n-k)*6-1<<")]"<<endl;
return 0;}
if(Test_P(n+k,-1)*Test_P(n-k,1)==1)
{ cout<<"["<<m*2<<":("<<(n+k)*6-1<<" , "<<(n-k)*6+1<<")]"<<endl;
return 0;}
}
cout<<"Not find this number!!"<<endl;
}
return 1;
}
*/
void __fastcall TForm1::Button1Click(TObject *Sender)
{
slnum x; int i;
Form1->Memo1->Lines->Clear();
if (a.arr_n ==1&&a.sl[0]<=2) { Form1->Memo1->Lines->Append('2'),i=1;}
for(x=a;x<=b;x=x+1)
if(Test_X(x)==1){++i; Form1->Memo1->Lines->Append(x.soure );}
char *s,*ss;
s=new char[65536];
ss=new char[65536];
strcpy(ss,"这个范围内的素数有:");
ltoa(i,s,10);
strcat(ss,s);
strcat(ss,"个");
Form1->Label7->Caption =ss;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit2Exit(TObject *Sender)
{
b.setval(strtoa(Form1->Edit2->Text));
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit1Exit(TObject *Sender)
{
a.setval(strtoa(Form1->Edit1->Text));
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button6Click(TObject *Sender)
{
slnum x; int i=0;
Form1->Memo1->Lines->Clear();
for(x=a;x<=b;x=x+1)
if(Test_P(x)==1){++i; Form1->Memo1->Lines->Append(x.soure );}
char *s,*ss;
s=new char[65536];
ss=new char[65536];
strcpy(ss,"这个范围内的Q数有:");
ltoa(i,s,10);
strcat(ss,s);
strcat(ss,"个");
Form1->Label7->Caption =ss;
}
//---------------------------------------------------------------------------
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
2005030805365212977.rar (17个子文件)
sl_p.mak 5KB
模2的素数处理备份.txt 7KB
sl_p.exe 149KB
slnum_p.h 2KB
slnum.obj 29KB
sl_p.bpr 3KB
sl_p.obj 18KB
slnum.cpp 10KB
slnum_p.dfm 12KB
slnum_p.obj 473KB
slnum.h 2KB
slnum_p.cpp 8KB
slnum_p.ddp 50B
sl_p.cpp 1KB
numpthread.cpp 1KB
numpthread.h 849B
sl_p.res 876B
共 17 条
- 1
资源评论
- 梦想家w2013-01-09还算一般吧 , 挺简单的东西 。
- parrort2012-08-05一般般吧,代码
普通网友
- 粉丝: 882
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Fortran语言教程,详细地介绍了Fortran语言
- (函数)图论中最短路径计算D算法MATLAB源代码,修改网络上D算法的错误,并编写通用的MATLAB函数.rar
- 基于matlab 2Dijkstra最短路径算法的matlab程序,希望对大家有所帮助.zip
- python入门学习,基础语法,用法等.zip
- Swift代码转换指南(Swift Swift Code Convension Guide .)
- Python入门到精通.zip
- 基于QT+C++开发的炫酷九宫格主界面+源码
- python入门代码测试.zip
- 一种基于Python实现中文编码格式转换工具的源码
- 基于matlab dijkstra算法,可以求解图论中的两点间最短路径.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功