提问人:Understanding 提问时间:2/7/2016 最后编辑:Understanding 更新时间:2/8/2016 访问量:950
是否有像“int”或“float”这样的函数,但对于质数?
Is there a function like "int" or "float" but for prime numbers?
问:
这个问题可能不清楚,我要问和搜索的是:在 C++ 编程中,人们用命令引入了变量的类型
- int,表示整数
- bool, 表示布尔值
- 双
- 浮
等等..
我想知道是否有类似的方法来定义“素数”,例如
素数 N;
因此,当他的程序将调用 $n$ 时,它会自动只取质数。
使用简单程序的应用程序:假设我想创建一个操作的整数部分列表
π^n
其中 π = Pi,n = 质数。 从数学上讲,这将是
地板[π^n]
不,我现在如何编写一个程序来列出一些质数,例如:
int main ()
{
for (int i=2; i<100; i++)
{
bool prime=true;
for (int j=2; j*j<=i; j++)
{
if (i % j == 0)
{
prime=false;
break;
}
}
if(prime) cout << i << " ";
}
return 0;
}
但我不太确定如何继续.另外,我很抱歉我表达我想做的事情的方式很糟糕!
答:
不,我的朋友,无论你问什么,都没有任何选择。
但是有一些方法可以做到这一点:
首先,使用 Structure、Union、Typedef 这些用于在 c lang 中创建数据类型
否则,其次,创建一个函数 prime() 并添加到库中,每当您想要包含该头文件时,然后使用该 fxn 将用户定义函数添加到库(使用 tlib.exe-TurboLibrarian):- 信息:-in cmd- tlib math.lib + c:\prime.obj (注意:使用“-”从库中删除 fxn
)
如何使用:
#include< math.h> .
.......................
........................
素数(n)
等等等等
........................
通过这种方式,您可以非常快速地检查素数 no 并将它们添加到数组中,然后您将得到一个仅包含素数 no 的数组(与接受素数的数据类型相同)
很酷不是吗?
关于所有提到的语言标签的答案是否定的。
素数包含在 int 中,因为所有素数都是整数。
要找出整数是否也是质数,需要在函数中实现算法。
假设存在 prime 类型,并且您使用 vulue 4 初始化它,这不是 prime...编译器应该说类型不匹配之类的内容,并且不允许你运行程序。 到目前为止听起来很简单,但是当有一个非常大的数字时会发生什么。它必须应用一种算法,这意味着它不再是编译器的问题。
有一些专门的语言和库。例如,Pari/Gp 有一个很好的解释器,具有许多与 Prime 相关的函数(解释器调用 C 库,所以它的速度很快): 例如
primes(100)
为您提供前 100 个素数的向量。甚至还有一个原始性测试。它真的很好,很容易开始玩。当你对重代数数论感兴趣时,这也是可能的。您的示例:isprime
P = precision(Pi, 1000)
vector(100, i, floor((P^prime(i))))
第一行创建具有足够高的求幂精度的 PI,第二行创建一个列表,其中包含 floor (Pi^p) 的计算,其中 p 的范围超过前 100 个素数。
有一个程序可以使用底层库将您的高级 gp 解释器脚本转换为可编译的 C 程序。当你需要更快的速度时,你可以使用它,但首先:使用gp Interpreter。gp2c
There are other packages as well, I would also recommend SAGE. It is an Open Source alternative to Maple and Mathematica. SAGE uses Python as its scripting language, here you would use:
for p in primes_first_n(100): print p
[ floor( pi^p ) for p in primes_first_n(100) ]
You can try it out by creating an account for the online version of SAGE
评论