4
$\begingroup$

I manually evaluate this cell to set Prime[0]

Unprotect[Prime]
Prime[0] = 1
Protect[Prime]   

I manually evaluate this cell to reset Prime[0]

Unprotect[Prime]
Prime[0] =.
Protect[Prime]  

In case I forget to do it, is there a way to automatically evaluate the second cell when I close the nb?

Motivation

I'm working with bags of primes and want to use $p_0$ as the bag for all prime greater than the square-root of some $n$.

Displayed as: $\left\{p_0^1,p_1^5,p_2^2,p_3^1,p_4^1\right\}$

With counts as: $\left\{1,5,2,1,1\right\}$

$\endgroup$
4
  • 1
    $\begingroup$ Have you seen NotebookEventActions[]? $\endgroup$ Sep 3, 2012 at 7:03
  • 5
    $\begingroup$ You also could just define something like: prime[x_Integer /; x >= 0] := If[x == 0, 1, Prime[x]] as another approach. $\endgroup$ Sep 3, 2012 at 7:07
  • $\begingroup$ @J.M.-- Looks interesting. I determined that if I exit mma, the change gets reset automatically. It's only a problem when I open or create nbs from the current session. Thanks. $\endgroup$ Sep 3, 2012 at 7:54
  • 2
    $\begingroup$ I was hoping you'd answer your question yourself, since you figured out how to use it... :) $\endgroup$ Sep 3, 2012 at 12:25

1 Answer 1

5
$\begingroup$

Per J.M., I did this and it works. I put it in the same cell as the setup.

SetOptions[SelectedNotebook[],NotebookEventActions ->
Quiet[{Unprotect[Prime]; Prime[0] =.; Protect[Prime];}]}];
{Unprotect[Prime]; Prime[0] = 1; Protect[Prime]};    

Edited to add the Quiet to the actions.

$\endgroup$
1

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.