素数的算法,大侠们进来下吧~~~~

来源:百度知道 编辑:UC知道 时间:2024/06/07 03:36:22
对一个大于或等于3的正整数,判断它是不是一个素数。
算法可表示如下:
S1: 输入n的值
S2: i=2
S3: n被i除,得余数r
S4:如果r=0,表示n能被i整除,则打印n“不是素数”,算法结束;否则执行S5
S5: i+1→i
S6:如果i≤n-1,返回S3;否则打印n“是素数”;然后算法结束。
改进:
S6:如果i≤ ,返回S3;否则打印n“是素数”;然后算法结束。

能否把这个运算过程解释下,菜鸟,没看懂!!!谢谢
1楼的朋友 能否把你说的那种算法贴出来啊,谢谢! 感谢各位的大侠的指点,分只能给一个人,不能给你们所有人,真的对不起啊,你们都回答的很好,我受教了,在此谢谢各位啦!尽管分给了一个人,但不见其他的回答的就不好,你们都是the best.谢谢!!!!可能我刚入门,ansn001的答案才是我所想要的吧,不过还是感谢你们的帮助~~~~

S1: 输入n的值
S2: i=2
S3: n被i除,得余数r
S4:如果r=0,表示n能被i整除,则打印n“不是素数”,算法结束;否则执行S5
S5: i+1→i
S6:如果i≤n-1,返回S3;否则打印n“是素数”;然后算法结束。
改进:
S6:如果i≤ ,返回S3;否则打印n“是素数”;然后算法结束。

这个算法关键在s4和s5的过渡。
先来看S4.S4的意思是n对2求余,余数=r。(也就是S2)
如果r=0(也就是n能整除以i=2)因为直接打印出不是素数。
如果r!=0.那么就执行S5(也就是i++),然后再执行S4的判断

S6的意思是当i<=n-1的时候n%i!=0.也就是n不能整除任何一个n-1和之前的数。现在只剩下n本身了。而素数的意思就是除了1和本身。所以也可以判断是素数。

#include<stdlib.h>
#include <stdio.h>

main()
{
int n,i ;
scanf("%d",&n);/*S1*/

for(i=2/*s2*/; i <n;i++ /*S5*/)
if (n%i/*S3和S4其中r=n%i*/== 0)
break;

if(i<=n-1)/*S6*/
printf("%d is Prime .\n",n);
else
printf ("%d is not Prime .\n ",n);
system("pause");

}

一种if结构的判断,再加上一组循环体,现在很少用这种方法算素数的