作业帮 > 综合 > 作业

c语言 指定范围内的回文素数,要求1S内完成的

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/07/14 01:55:03
c语言 指定范围内的回文素数,要求1S内完成的
The number 151 is a prime palindrome because it is both a prime number and a palindrome (it is the same number when read forward as backward).Write a program that finds all prime palindromes in the range of two supplied numbers a and b (5
#include
#include
#include
#include
#include
#pragma comment(lib,"Winmm.lib")
//
//判断素数,稍有改建,miller_rabin算法在算1亿以内的数不如这个经典的算法快
bool IsPrime(long n)
{
long i=sqrt(n);
for(i;i>=7;i--)
if(n%i==0)
{
return false;
}
return true;
}
//回文数判断经典算法
bool IsPalindrome(long m)
{
long i, n;
i=m;
n=0;
while(i)
{
n=n*10+i%10;
i/=10;
}
return m==n; //返回true说明就是回文数了.
}
////////////////////////////////////////////////////
//*
long Arry[6000];//顺序表存储读取的回文数
int ptr;//指针
int main()
{
time_t start,finish,r;
long i;
long count=0;

FILE* fp;
if(!(fp=fopen("data.txt","r")))
{
printf("记录回文数的文件无法打开,请检查是否存在\n");
return 0;
}
ptr=0;
while(!feof(fp))
{
fscanf(fp,"%ld",Arry+ptr);
ptr++;
}
ptr-=1;//多弄出来1个记录
start=timeGetTime();
for(i=0;i
再问: 我们刚学习C语言,很多都没讲的很详细,就开始做这种比较难点儿的作业了、我有几个地方不太懂, 1.#include #include #include #include #include 这些开头引用的函数都是什么意思呢??、 2.布尔型变量输出true 和 false后如何承接到下面的函数呢? 3.判断质数的方法除了递除还有miller rabin就这两种方法么?我可以不可以用之前判断出的质数来进行检验呢?
再答: ⊙﹏⊙b汗,。。。以后你学完C语言就都明白了。 1.前面是包含5个头文件,这些头文件里包含用到几个库函数的声明。 stdlib.h这个头文件例外,程序里没有一个库函数的声明在这里,调试的时候用了下,可以删除的。 stdio.h不多说,必备的 math.h求平方根sprt()函数声明所在文件 time.h time_t变量,一般的时间获取函数所在文件 Windows.h 获取较精确时间的函数timeGetTime()函数声明所在文件 2.bool IsPrime(long n) 这样的是函数定义,它后面的函数可以调用它。这里偷懒没写声明。 3.还有很多方法。你说的那个方法好像叫什么素数表发,也要先构建一个素数表。而且要判断的素数越大素数表包含的数据也就越多。你可以自己找找看看效果。那些方法在1亿个数字面前都会累积用掉相当大的时间。