04、判断一个数是否是素数——循环

判断一个数是否是素数

 

判断一个数是否是素数

源程序代码:

/*
    2017年3月8日21:15:32
    功能:判断一个数是否是素数
*/
#include "stdio.h"
int main ()
{
    char s[100] ="YES";
    char s1[100] = "NO";
    int n;

    printf ("Please enter a data: ");
    scanf ("%d",&n);

    for (int i = 2; i < n ; i++)
    {
        if (n % i != 0)
            continue;
        else 
        {
            printf ("the result is %s\n",s1);
            break;
        }
    }
    if(i == n)
        printf("the number is %s\n",s);


    return 0;
}
/*
    总结:
    在VC++6.0中显示的结果:
    ——————————————————————————
    Please enter a data:9
    the result is NO
    ——————————————————————————
*/

 

优化算法:

# include <stdio.h>
int main(void)
{
	 int fun(int);									//函数声明;
	 int n;
 
	 printf("素数判定,请输入一个整数:");
	 scanf("%d", &n);
 
	 if(fun(n))										//函数返回值为1,为素数,否则不是素数;
	  printf("%d是素数\n", n);
	 else
	  printf("%d不是素数\n", n);

	 return 0;
}

int fun(int x)										//函数可以在主函数内声明,但是不能在函数内再定义一个函数,否则出错;
{
	 int i;
	 for(i=2; i<x; i++)
	 { 
		  if(x%i == 0)								//素数只能被1和他本身整除 
		   break;
	 }
	 if(i == x)										//当i==x,说明x%i(i<x)的所有值都不等于0,x就是素数;
	  return 1;  
	 else
	  return 0;
}

 

扩展:用筛选法求1-100之间的素数

/*
  2017年6月30日19:46:07
  功能:用筛选法求1-100之间的素数 
*/ 

# include <stdio.h>
# define N 100

int main(void)
{
	 int a[N], b[N];					//定义两个数组
	 int i, j, count = 0;

	 for(i=1; i<N; i++)
		a[i] = 0;						//初始化所有数

										/*若筛中最小数的标志为0,则基为素数,将其存入素数数组b,素数个数+1*/
	 for(j=2; j<=N; j++)
		if(a[j-1] == 0)					//没有排除的数值为还是0
		 {
			   b[count] = j;
			   for(i=j; i<=N; i=i+j)
				a[i-1] = 1;				//将排除的数赋值为1(分别是2的倍数、3的倍数..到10的倍数的号)
			   count++;
		 }
	 for(i=1; i<=count; i++)
	 {
		  printf("%-5d",b[i-1]);		//每5个数为一组输出
		  if(i%5==0)
		  printf("\n");
	 }
	 return 0;
}
/*
在VC++6.0中显示的结果为:
----------------
2    3    5    7    11
13   17   19   23   29
31   37   41   43   47
53   59   61   67   71
73   79   83   89   97
----------------
*/

  

  

  

posted @ 2017-03-08 11:25  樱桃挚爱丸子  阅读(493)  评论(0编辑  收藏  举报