如何在Verilog中测试素性?

如何在Verilog中测试素性?,verilog,primes,system-verilog,primality-test,Verilog,Primes,System Verilog,Primality Test,我有下面显示的Verilog代码,如果我试图编译它,就会收到一条错误消息。关键是我试图操纵一个输入,据我所知,这在Verilog中是无法完成的。关键是我需要在Verilog中检查以下条件: static int prime(unsigned long long n) { unsigned long long val = 1; unsigned long long divisor = 5; if (n == 2 || n == 3) return 1;

我有下面显示的Verilog代码,如果我试图编译它,就会收到一条错误消息。关键是我试图操纵一个输入,据我所知,这在Verilog中是无法完成的。关键是我需要在Verilog中检查以下条件:

static int prime(unsigned long long n)
{
    unsigned long long val = 1;
    unsigned long long divisor = 5;

    if (n == 2 || n == 3)
        return 1;
    if (n < 2 || n%2 == 0 || n%3 == 0)
        return 0;
    for ( ; divisor<=n/divisor; val++, divisor=6*val-1)
    {
        if (n%divisor == 0 || n%(divisor+2) == 0)
            return 0;
    }
    return 1;
}
static int prime(无符号长n)
{
无符号long val=1;
无符号长除数=5;
如果(n==2 | | n==3)
返回1;
如果(n<2 | | n%2==0 | | n%3==0)
返回0;

对于(;除数,Verilog BNF不允许(;;)
中出现空语句或复合语句。请将文件更改为*.sv,以便根据SystemVerilog规则进行编译。否则,请将for循环语句更改为具有简单语句

for( divisor =5; divisor <= A/divisor; divisor=6*val-1) begin
                if (A%divisor == 0 || A%(divisor+2) == 0) begin
                    P <= 0;
                end
                val++;
            end

for(除数=5;除数也
var
根本不需要
for(除数=5;除数@Greg)您不能在每次迭代后简单地添加5。5+5=10,您根本不需要检查%10。如果需要,您可以使用
for(step=2,divisor=5;divisor*divisor
+5
是一个输入错误。我的意思是
+6
。等等!你是说0和1是素数吗?我知道它们不是素数,而不是检查
divisor@LưuVĩnhPhúc。但是在给我的任务中,我需要假设它们是素数,甚至不知道为什么。但是是的,2是最小的首要的
for( divisor =5; divisor <= A/divisor; divisor=6*val-1) begin
                if (A%divisor == 0 || A%(divisor+2) == 0) begin
                    P <= 0;
                end
                val++;
            end