Вам нужно использовать перерыв. Но сначала давайте очистим презентацию, чтобы она была более читабельной:
func()=
{
for(K=1,10,
for(i=1,5,
if(isprime(2*i*prime(K)+1)==1,
print(2*i"*"prime(K))
)
)
);
}
func()
Вы хотите вырваться из внутреннего l oop, вот так (просто предоставив саму функцию):
func()=
{
for(K=1,10,
for(i=1,5,
if(isprime(2*i*prime(K)+1)==1,
print(2*i"*"prime(K));
break
)
)
);
}
Но пока мы здесь, нет необходимости добавлять == 1
; if
уже разветвляется на ненулевые значения.
func()=
{
for(K=1,10,
for(i=1,5,
if(isprime(2*i*prime(K)+1),
print(2*i"*"prime(K));
break
)
)
);
}
Мы также можем хранить значение простого числа (K), поэтому нам не нужно вычислять его дважды. Но еще лучше, давайте использовать al oop непосредственно над простыми числами, чтобы нам вообще не нужна функция prime()
!
func(maxK=10)=
{
my(K=0);
forprime(p=2,prime(maxK),
K++;
for(i=1,5,
if(isprime(2*i*p+1),
print(2*i"*"p);
break
)
)
);
}
Здесь я изменил функцию, чтобы вы могли вызывать ее с разными максимальные значения, кроме 10, и я сохранил индекс на случай, если вы захотите его по какой-то причине. Но я думаю, что лучшим подходом было бы дать оценку того, как высоко вы хотите go в простых числах, и полностью забыть о простых индексах:
func(maxP=29)=
{
forprime(p=2,maxP,
for(i=1,5,
if(isprime(2*i*p+1),
print(2*i"*"p);
break
)
)
);
}
В обоих случаях я добавил значение по умолчанию аргумент, вызывающий func()
, будет делать то же самое, что и ваша исходная функция (за исключением того, что теперь он ломается так, как вы хотите).