#include<stdio.h>
#include<math.h>
/*
质数判断的基本思路:对于正整数n(n>1),用2~根号n去除它,如果存在整除的情况,则n不是质数
否则,必定为质数。
*/
void main()
{
int n,i,k;
do
{
printf("输入一个正整数:");
scanf("%d",&n);
}while(n<=0);
if(n==1)
printf("%d不是质数",n);
else
{
k=(int)sqrt(n);
for(i=2;i<=k;i++)
{
if(n%i==0)//如果n能整除2~sqrt(n),那么就不是质数
{
break;
}
}
if(i>k)
printf("%d是质数\n",n);
else
printf("%d不是质数\n",n);
}
}
输入:3
结果:
输入一个正整数:3
3是质数
java实现:算法都是一样的,只是输入输出不一样而已。
package Ctojava;
/*
质数定义为在大于1的自然数中,除了1和它本身以外 不再有其他因数的数。
*/
import java.util.Scanner;
public class IsPrime
{
public static void main(String[] args)
{
Scanner scanner=new Scanner(System.in);
System.out.println("输入一个数:");
int n=scanner.nextInt();
if(n<=1)
{
System.out.println(n+"不是质数");
System.exit(0);//退出程序
}
int i;
int k=(int) Math.sqrt(n);
for(i=2;i<=k;i++)
{
if(n%i==0)//如果找到一个因数i
break;
}
if(i>k)//如果找不到因数那就是质数
System.out.println(n+"是质数");
else
System.out.println(n+"不是是质数");
}
}
测试1:
输入一个数:
2
2是质数
测试2:
输入一个数:
14
14不是是质数