这是一链队列代码,初始化、进队、出队等功能都有了,输出队列所有数据元素的代码留给题主试着写写,供参考:
#include <stdio.h>
#include <stdlib.h>
#include <crtdbg.h>
#define MAXSIZE 1024
#define OVERFLOW -2
#define OK 1
#define ERROR 0
typedef int QElemType;
typedef struct QNode{
QElemType data;
struct QNode* next;
}QNode, * QueuePtr;
typedef struct
{
QueuePtr front;//队头指针
QueuePtr rear; //队尾指针
}LinkQueue;
void InitQueue(LinkQueue& Q)//构造一个队列
{
Q.front = Q.rear = (QueuePtr)malloc(sizeof(QNode));
if (!Q.front) exit(OVERFLOW);
Q.front->next = Q.rear->next = NULL;
return;
}
void EnQueue(LinkQueue& Q, QElemType e)// 进队函数
{
QNode* p;
p = (QueuePtr)malloc(sizeof(QNode));
if (!p) exit(OVERFLOW);
p->data = e;
p->next = NULL;
if (!Q.front->next)
Q.front->next = p;
else
Q.rear->next = p;
Q.rear = p;
return;
}
void DeQueue(LinkQueue& Q, QElemType &e)// 出队函数
{
if (!Q.front->next) {
e = -999;
return;
}
QueuePtr p = Q.front->next;
e = p->data;
Q.front->next = p->next;
free(p);
return;
}
void DestroyQueue(LinkQueue& Q)//销毁队列
{
while (Q.front)
{
Q.rear = Q.front->next;
free(Q.front);
Q.front = Q.rear;
}
return;
}
int main()
{
int e;
LinkQueue Q;
InitQueue(Q);
EnQueue(Q, 8);
EnQueue(Q, 10);
DeQueue(Q, e);
printf("%d\n", e);
DeQueue(Q, e);
printf("%d\n", e);
DeQueue(Q, e);
printf("%d\n", e);
DestroyQueue(Q);
return 0;
}
我们要判断素数,首先要知道素数的定义。
素数:质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。
知道了素数的定义,那么我们应该想一下,如何去判断一个数是否为素数?
一种思路是,我们在每次得到一个数后,都去计算,去尝试因式分解它,看它除了1和自身之外还有没有其他因子
另一种是,我们去查阅素数表,看这个数在不在素数表上。那我们就要先得到素数表。
以下除了第一种方法,第2~4种方法都是用第二种思路做的
当要判断的目标数很少时,第一种高效。但是当给定的目标数组很多,数也很大时。后面的思路配上高效的查找算法,显然更高效
难!VS2012本身并不支持Python。沾点边说也要安装一个 IronPython。