go语言求素数 go语言math包

求素数幻方,这道题怎么做?。?c语言)4阶的话,可以考虑直接递归搜索 。我试了试有2992组解 。
121112
4985
710314
6131615
121112
4985
1310314
671615
121112
41585
716314
613109
121112
41585
1316314
67109
121112
10385
7161514
61349
121112
10385
13161514
6749
121112
10985
74314
6131615
121112
10985
741514
613163
121112
10985
134314
671615
121112
10985
1341514
67163
…………
#include stdio.h
#include math.h
#include windows.h
#define MAX_NUM 30
#define _PRINT_ 0
unsigned longResult[MAX_NUM * MAX_NUM], ResultNum, Used[MAX_NUM * MAX_NUM]={0};
boolPrimeTable[MAX_NUM * MAX_NUM * 2]={ false };
unsigned longN, QN;
void CreatePrimeTable(void)
{
PrimeTable[0]=false;
PrimeTable[1]=false;
PrimeTable[2]=true;
PrimeTable[3]=true;
for(unsigned long j=5; j = MAX_NUM * MAX_NUM * 2; j =2)
{
PrimeTable[j]=true;
for(unsigned long i=3; i = sqrt((double)j); i =2)
{
if(j % i == 0)
{
PrimeTable[j]=false;
break;
}
}
}
}
inline bool IsPrime(unsigned long n)
{
return PrimeTable[n];
}
bool CheckIt(unsigned long Deep)
{
if(Deep == 0)
{
return true;
}
else if(DeepN)
{
return IsPrime(Result[Deep]Result[Deep - 1]);
}
else if(Deep % N == 0)
{
return IsPrime(Result[Deep]Result[Deep - N]);
}
else
{
return(IsPrime(Result[Deep]Result[Deep - 1])IsPrime(Result[Deep]Result[Deep - N]));
}
}
void go(unsigned long Deep)
{
if(Deep == QN)
{
ResultNum;
#if (_PRINT_)
printf("Find it! No.%lu\n", ResultNum);
for(unsigned long i=0; iQN; i)
{
printf("%lu\t", Result[i]);
if(i % N == N - 1)
{
printf("\n");
}
}
#else
printf("\rFind:%lu", ResultNum);
#endif
}
else
{
for(unsigned long i=1; i = QN;i)
{
if(!Used[i])
{
Result[Deep]=i;
if(CheckIt(Deep))
【go语言求素数 go语言math包】{
Used[i]=1;
go(Deep1);
Used[i]=0;
}
}
}
}
}
int main()
{
DWORDtim;
ResultNum=0;
printf("Input N:");
scanf("%lu", N);
QN=N * N;
tim=GetTickCount();
CreatePrimeTable();
go(0);
printf("\n\nN=%lu\n", N);
printf("Total=%lu\n", ResultNum);
printf("Time=%lu\n", GetTickCount() - tim);
return 0;
}
关于补充问题:
相邻 不包含斜方向的吧?相邻不就是上下、左右……包含斜线的话,再增加一种情况就可以了 。不过用的时间会多点
java程序:输入m,n求其之间的素数import java.util.Scanner;
public class FindPrimes {
public static void main(String[] args) {
Scanner c = new Scanner(System.in);
int a = c.nextInt();
int b = c.nextInt();
int m=0,n=0;
if(a == b){
System.out.println("m和n相等");
System.exit(0);
}else{
if(ab){
m = b;
n = a;
}else{
m = a;
n = b;
}
}
for (int i = m; i = n; i) {
//遍历整除时go语言求素数,只需遍历到二分之一i加1即可
int k = (int)Math.ceil(i/2);
boolean flag = true;
//从2到N遍历
for (int j = 2; j = k; j) {
//能被整除go语言求素数,不是素数
if(i%j==0){
flag = false;
}
}
if(flag){
System.out.println(i);
}
}
}
}
关于GO 语言的入门学习 求解答已经有好多程序员都把Go语言描述为是一种所见即所得(WYSIWYG)的编程语言 。这是说,代码要做的事和它在字面上表达的意思是完全一致的 。在这些新语言中,包含D,Go,Rust和Vala语言,Go曾一度出现在TIOBE的排行榜上面 。与其他新语言相比 , Go的魅力明显要大很多 。Go的成熟特征会得到许多开发者的欣赏 , 而不仅仅是因为其夸大其词的曝光度 。下面我们来一起探讨一下谷歌开发的Go语言以及谈谈Go为什么会吸引众多开发者: 快速简单的编译 Go编译速度很快,如此快速的编译使它很容易作为脚本语言使用 。关于编译速度快主要有以下几个原因:首先,Go不使用头文件;其次如果一个模块是依赖A的,这反过来又取决于B,在A里面的需求改变只需重新编译原始模块和与A相依赖的地方;最后 , 对象模块里面包含了足够的依赖关系信息,所以编译器不需要重新创建文件 。你只需要简单地编译主模块,项目中需要的其他部分就会自动编译,很酷,是不是? 通过返回数值列表来处理错误信息 目前,在本地语言里面处理错误的方式主要有两种:直接返回代码或者抛异常 。这两种都不是最理想的处理方式 。其中返回代码是非常令人沮丧的,因为返回的错误代码经常与从函数中返回的数据相冲突 。Go允许函数返回多个值来解决这个问题 。这个从函数里面返回的值,可以用来检查定义的类型是否正确并且可以随时随地对函数的返回值进行检查 。如果你对错误值不关心,你可以不必检查 。在这两种情况下,常规的返回值都是可用的 。简化的成分(优先于继承) 通过使用接口,类型是有资格成为对象中一员的 , 就像Java指定行为一样 。例如在标准库里面的IO包 , 定义一个Writer来指定一个方法,一个Writer函数 , 其中输入参数是字节数组并且返回整数类型值或者错误类型 。任何类型实现一个带有相同签名的Writer方法是对IO的完全实现,Writer接口 。这种是解耦代码而不是优雅 。它还简化了模拟对象来进行单元测试 。例如你想在数据库对象中测试一个方法,在标准语言中,你通常需要创建一个数据库对象,并且需要进行大量的初始化和协议来模拟对象 。在Go里面 , 如果该方法需要实现一个接口,你可以创建任何对该接口有用的对象,所以 , 你创建了MockDatabase,这是很小的对象,只实现了几个需要运行和模拟的接口——没有构造函数 , 没有附件功能,只是一些方法 。简化的并发性 相对于其他语言,并发性在Go里面显得更加容易 。把‘go’关键字放在任意函数前面然后那个函数就会在其go-routine自动运行(一个很轻的线程) 。go-routines是通过通道进行交流并且基本上封锁了所有的队列消息 。普通工具对相互排斥是有用 , 但是Go通过使用通道来踢掉并发性任务和坐标更加容易 。优秀的错误消息 所有与Go相似的语言 , 自身作出的诊断都是无法与Go相媲美的 。例如,一个死锁程序,在Go运行时会通知你目前哪个线程导致了这种死锁 。编译的错误信息是非常详细全面和有用的 。其他 这里还有许多其他吸引人的地方,下面就一概而过的介绍一下,比如高阶函数、垃圾回收、哈希映射和可扩展的数组内置语言(部分语言语法,而不是作为一个库)等等 。当然,Go并不是完美无瑕 。在工具方面还有些不成熟的地方和用户社区较小等,但是随着谷歌语言的不断发展,肯定会有整治措施出来 。尽管许多语言 , 尤其是D、Rust和Vala旨在简化C并且对其进行简化,但它们给人的感觉仍是“C看上去要更好” 。
【Go语言的优势】
可直接编译成机器码,不依赖其他库,glibc的版本有一定要求,部署就是扔一个文件上去就完成了 。
静态类型语言 , 但是有动态语言的感觉,静态类型的语言就是可以在编译的时候检查出来隐藏的大多数问题 , 动态语言的感觉就是有很多的包可以使用,写起来的效率很高 。
语言层面支持并发,这个就是Go最大的特色,天生的支持并发 , 我曾经说过一句话 , 天生的基因和整容是有区别的 , 大家一样美丽,但是你喜欢整容的还是天生基因的美丽呢?Go就是基因里面支持的并发,可以充分的利用多核,很容易的使用并发 。
内置runtime,支持垃圾回收,这属于动态语言的特性之一吧 , 虽然目前来说GC不算完美,但是足以应付我们所能遇到的大多数情况,特别是Go1.1之后的GC 。
简单易学,Go语言的作者都有C的基因,那么Go自然而然就有了C的基因,那么Go关键字是25个,但是表达能力很强大 , 几乎支持大多数你在其他语言见过的特性:继承、重载、对象等 。
丰富的标准库,Go目前已经内置了大量的库,特别是网络库非常强大,我最爱的也是这部分 。
内置强大的工具,Go语言里面内置了很多工具链,最好的应该是gofmt工具 , 自动化格式化代码,能够让团队review变得如此的简单,代码格式一模一样 , 想不一样都很困难 。
跨编译,如果你写的Go代码不包含cgo , 那么就可以做到window系统编译linux的应用,如何做到的呢?Go引用了plan9的代码,这就是不依赖系统的信息 。
内嵌C支持,前面说了作者是C的作者,所以Go里面也可以直接包含c代码,利用现有的丰富的C库 。
关于go语言求素数和go语言math包的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读