如何判断一个数是不是质数,什么是质数?


怎样判断一个数是不是质数? 当前的这个数如果能够被比他小的数整除(n%i==0) , 返回0(return 0)说明它不是质数 , 如果从2一直到比他小1的数都不能被整除 说明 这个数不能被任何数整除 当然就是质数了return 1
怎样判断一个数是不是质数(计算机编程) 判断一个数是否是质数在于看这个数字是否只能被1和它本身所整除的整数 。 但是有一个例外 , 1不属于质数 。
c语言中的质数:
数学的概念中 , 素数就是只能被1和它本身所整除的整数 。 但是有一个例外 , 就是1不属于素数 。 所以你在输入一个整数并加以判断的时候就需要考虑这种情况了 。 如下即可:
while(scanf("%lu", &num) == 1 && num != 1)
1
这里用到了while循环来判断输入的数值并加以判断 , 如果输入格式正确的话会返回一个1并将输入的数值存入num这个变量中 , 然后再判断num的值是否为1 。
在这里有一条很好用的规则用于素数的判断:测试的数只需要界于2到num的平方根之间的所有数 , 看它们是否可以整除num 。 如果可以整除 , 说明输入的数不是素数;反之 , 说明输入的数是素数 。
到这里 , 就会有人说平方根怎么求 , 其实这个很好解决 。 你完全可以像下面这样描述判断条件:
for(div = 2; (div * div) <= num;div++){
if(num % div == 0){
if((div * div) != num){
printf("%lu is divisible by %lu and %lu.\n", num, div, num / div);
}else {
printf("%lu is divisible by %lu.\n", num, div);
在这里 , 在if条件语句里面还嵌套了一个if条件语句 , 用来判断两个约数是否是一样的 , 比如144 , 约数是12和12 , 这时候就只需要打印一个约数即可 。
第二 , 我们怎样知道一个数数素数呢?
如果num是素数 , 程序流程永远也进不了if语句中 。 为了解决这个问题 , 可以在循环外设置一个变量为某一值 , 比方说1 , 在if语句中将这个变量重设为0 。 那么 , 循环完成后 , 可以检查该变量是否仍然是1 。 如果是 , 则从没进入过if语句 , 这个数是素数 。 我这里用int类型的变量isPrime来当作一个标志实现这个想法 。
好了 , 结合上面的所有想法 , 我们开始写代码了:
#include<stdio.h>
int main(void)
unsigned long num;// 要检查的数
unsigned long div;// 可能的约数
int isPrime;// 素数的标志,1代表是素数 , 0代表不是素数
printf("Please enter an integer for analysis. ");
printf("Enter q to quit.\n");
while(scanf("%lu", &num) == 1 && num != 1)
for(div = 2, isPrime = 1;(div * div) <= num; div++){
if(num % div == 0){// 如果能被div整除
if((div * div) != num){// 约数不相等
printf("%lu is divisible by %lu and %lu.\n", num, div, num / div);
}else{// 约数相同
printf("%lu is divisible by %lu.\n", num, div);
// 将isPrime设置为0 , 表示其不是一个素数
isPrime = 0;
if(isPrime == 1){
printf("%lu 是素数.\n", num);
printf("Please enter another integer for analysis. ");
printf("Enter q to quit.\n");
printf("Bye.\n");
return 0;
这里有一个关键就是 , 在for循环控制表达式中使用了逗号运算符 , 以针对每个新输入的数将isPrime初始化为1 。

用java语言判断一个数是不是质数? 可以用程序【易语言】:代码如下
.版本 2
.局部变量 开方, 整数型
.局部变量 结果, 双精度小数型
.局部变量 计次, 整数型
.如果 (到数值 (到文本 (编辑框7.内容)) ≤ 0)
    信息框 (“此数非质数!”, 64, “Windows提示”, )  ' 排除负数

推荐阅读