📦 归档笔记 — 原创建于 WizNote,仅作归档展示;观点以当年为准,非最新。

循环嵌套计算是否为质数

创建时间2018-01-30最后修改2018-01-31原位置/程序员成长之旅/C语言/自己写的源码/字数447
目录:程序员成长之旅/C语言/自己写的源码

输入数字版本:

#include<stdio.h>

#include<limits.h>

#include<math.h>

int main()

{

int Num = 0, i = 0, k = 0;

printf("Enter number(>3):\n");

scanf("%d", &Num);

k = sqrt(Num);

if (Num > 3 && k <= INT_MAX)

{

for (i = 2; k < Num; i++)

{

if (Num%i == 0)//此时说明输入的数字能被某一个数字相除无余数,并且由于限制,循环数i肯定小于输入的数字,所以可由此判断此数字是否为素数(质数)

break;

}

if (i < Num) printf("Number [%d] not is prime!", Num);

else printf("Number [%d] is prime!", Num);//因为for 只要 i小于输入的Num 就继续执行 并且i++ 所以数字一定比输入的数字大1

}

else

{

printf("You enter data error!");

}

return 0;

}

划定范围版本:

#include<stdio.h> //计算100~200有哪些数字是质数

#include<math.h>

int main()

{

int i = 0, Num = 0, k = 0, Result=0;

for (Num = 100; Num <= 200; Num++)//当前运行的数字

{

k = sqrt(Num);//计算Num的平方根

for (i = 2; i < k; i++)//若除到2~Num的平方根 都没有余数得0,则是质数

{

if (Num%i == 0)

{

Result = 0;//不是质数

break;

}

else

{

Result = 1;//是质数

break;

}

}

if (Result == 1)

{

printf("Number [%d] is prime!\n", Num);

}

else

{

printf("Number [%d] not is prime!\n", Num);

}

}

return 0;

}

自定义范围版:

#include<stdio.h>

#include<math.h>

#include<limits.h>

int main()

{

int Min = 0, Max = 0, i = 0, j = 0, k = 0, Num = 0;

printf("Enter range(Number1~Number2):\n");

scanf("%d~%d", &Min, &Max);

if (Min > 0 && Max <= INT_MAX)//判断是否输入正确数字和非法字符。

{

for (Num = Min; Num <= Max; Num++)

{

k = sqrt(Num);

for (i = 2; i < k; i++)

{

if (Num%i == 0)

{

break;//提前跳出循环,应合 if (i < k) 来判断是否为质数,提前跳出说明有数字能整除当前运行数字。

}

}

if (i < k)

{

printf("Number [%d] not is prime!\n", Num);

}

else

{

printf("Number [%d] is prime!\n", Num);

}

}

}

else

{

setbuf(stdin, NULL);//清除数据防止出错

printf("You enter data error\n");

return 0;

}

}