百度
360搜索
搜狗搜索

判断素数的c语言程序,如何编写一个C语言程序判断一个数是否是素数?详细介绍

本文目录一览: 用C语言如何判断素数

材料/工具:visual C++ 6.0
1、打开visual C++ 6.0-文件
2、点击新建-文件-C++ Source File
3、输入预处理命令和主函数:
#include

/*函数头:输入输出头文件*/

void main() /*空类型:主函数*/

4、定义变量并输入一个数字:

int m,i; /*定义变量的数据类型为整型*/

printf("输入一个数:"); /*输出文字提示*/

scanf("%d",&m); /*输入一个数字*/

5、用for函数和if函数判断是否是素数:

for(i=2;i<=m;i++) /*用for函数重复下面步骤*/

if(m%i==0) /*判断输入的数是否能被除1和本身以外的数整除*/

break;

if(i>m) /*判断i是否大于m*/

printf("%d 是素数\n",m); /*输出是素数*/

else

printf("%d 不是素数\n",m); /*输出不是素数*/

6、完整的源代码:

#include

/*函数头:输入输出头文件*/

void main() /*空类型:主函数*/

{

int m,i; /*定义变量的数据类型为整型*/

printf("输入一个数:"); /*输出文字提示*/

scanf("%d",&m); /*输入一个数字*/

for(i=2;i<=m;i++) /*用for函数重复下面步骤*/

if(m%i==0) /*判断输入的数是否能被除1和本身以外的数整除*/

break;

if(i>m) /*判断i是否大于m*/

printf("%d 是素数\n",m); /*输出是素数*/

else

printf("%d 不是素数\n",m); /*输出不是素数*/

}

介绍三种使用C语言来判断素数的方法,以及用做素数表来判断找素数的方法。

判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。

#include〈math.h〉 main(){ int m,k,i; for(m=1;m<=100;m=m+2) //m=m+2,因为偶数都不是素数,不用考虑,所以每次m+2. { k=sqrt(m) //先求这个数的平方跟 for(i=2;i<=k;i++) //然后用i(从2到k,即m的平方跟)去除m, if(m%i==0) break; //如果能被整除, 则不是素数,break if(i>=k+1) pritnf("%d",m); //如果i>k+1,则说明没有数能整除m.则m是素数 } }

所谓素数是指除了1和它本身以外,不能被任何整数整除的数,例如17就是素数,因为它不能被2~16的任一整数整除。因此判断一个整数m是否是素数,只需把m被2~m-1之间的每一个整数去除,如果都不能被整除,那么m就是一个素数

另外判断方法还可以简化。m不必呗2~m-1之间的每一个整数去除,只需被2~√m之间的每一个整数去除就可以了。如果m不能被2~√m间任一整数整除,m必定是素数。例如判别17是是否为素数,只需使17被2~4之间的每一个整数去除,由于都不能整除,可以判定17是素数。(原因:因为如果m能被2~m-1之间任一整数整除,其二个因子必定有一个小于或等于√m,另一个大于或等于√m。例如16能被2,4,8整除,16=2*8,2小于4,8大于4,16=4*4,4=√16,因此只需判定在2~4之间有无因子即可)

#include

#include

void main()

{

int m,i,k;

printf("请输入一个整数:");

scanf("%d",&m);

k=(int)sqrt(m);

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

if(m%i==0)

break;

if(i>k)

printf("%d 是素数。\n",m);

else

printf("%d 不是素数。\n",m);

}

//素数定义:除了1和本身外无法被其他自然数整除的数,叫做素数,也称质数,如:2,3,5,7一系列(负数或1和0都不是素数)

#include

int main()

{

printf("请输入需要判断的数字:\n");

int num;

scanf("%d",&num); //从键盘输入数字储存到num中

if (num <= 1)

printf("%d不是素数\n",num); //只要输入小于等于1的数直接判断为不是素数

else

{

int count=0;

for (int i = 2; i < num; i++)

{

if (num%i == 0) //用num除以2,3,4,5,6。。。。等等所有数,判断是否能整除。

count++; //每次被整除时count自动增加1

}

if (count > 0) //若count大于0,则证明存在被整除的数,证明不是素数。

printf("%d不是素数\n", num);

else

{

printf("%d是素数\n", num);

}

}

return 0;

}

按照如下步骤即可用C语言判断素数:

1、首先打开visual C++ 6.0,然后点击左上角的文件,再点击新建。

2、然后在弹出的新建对话框中点击C++Source File。

3、在新建的文件文本框中输入预处理命令和主函数,即函数头和空类型。

4、然后再定义变量并输入一个数字,即定义变量的数据类型,输出文字提示,再输入一个数字。

5、然后用for函数和if函数判断是否是素数。

6、点击确定后即可成功创建刚刚新建的程序,随机输入一个数字即可验证一下刚刚创建的C语言。

怎么用c语言判断一个数是不是素数

解释如下:
#include"stdio.h"
#include"math.h"
main()
{
int
i,k,m;
//定义三个整形变量
scanf("%d",&i);
//输入i的值
k=sqrt(i);
//把输入的i的值的平方根的值赋值给k
for(m=2;m<=k;m++)
//从2开始进入循环,判断从2到k之间的数是否能被i整除
if(i%m==0)
//如果能被2整除则用break跳出循环
break;
if(m>k)
//判断通过循环后的m的值是否比k大,如果比k大则i是素数
printf("%d是素数
",i);
else
//如果不是则i不是素数
printf("%d不是素数",i);
getch();
}
解释如下:
#include"stdio.h"
#include"math.h"
main()
{
int
i,k,m;
//定义三个整形变量
scanf("%d",&i);
//输入i的值
k=sqrt(i);
//把输入的i的值的平方根的值赋值给k
for(m=2;m<=k;m++)
//从2开始进入循环,判断从2到k之间的数是否能被i整除
if(i%m==0)
//如果能被2整除则用break跳出循环
break;
if(m>k)
//判断通过循环后的m的值是否比k大,如果比k大则i是素数
printf("%d是素数
",i);
else
//如果不是则i不是素数
printf("%d不是素数",i);
getch();
}
解释如下:
#include"stdio.h"
#include"math.h"
main()
{
int
i,k,m;
//定义三个整形变量
scanf("%d",&i);
//输入i的值
k=sqrt(i);
//把输入的i的值的平方根的值赋值给k
for(m=2;m<=k;m++)
//从2开始进入循环,判断从2到k之间的数是否能被i整除
if(i%m==0)
//如果能被2整除则用break跳出循环
break;
if(m>k)
//判断通过循环后的m的值是否比k大,如果比k大则i是素数
printf("%d是素数
",i);
else
//如果不是则i不是素数
printf("%d不是素数",i);
getch();
}
最佳方案是用素数分布来处理,在处理大素数时尤其合理,用算术基本定理可能太慢了。如果知道素数分布相关知识,编出来还是很容易的,不然告诉你也是白搭。
#include"stdio.h"
#include"math.h"
void main()
{
int m,k,i;
printf("Please input a number:\n");
scanf("%d",&m);
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0) break;
if(i>k) printf("It is a prime number\n");
else printf("It is not a prime number\n");
getch();
}
方法一:
#include<stdio.h>
int main(){
int i,j;
printf("请输入一个正整数。\n");
scanf("%d",&i);
if(i<2)
printf("小于2,请重新输入。\n");
elseif(i%2==0)
printf("%d不是一个素数。\n",i);
else{
for(j=2;j<=i/2;j++){
if(i%j==0){
printf("%d不是一个素数。\n",i);
break;

if(j>i/2){
printf("%d是一个素数。\n",i);
break;




方法二:
#include<stdio.h>
int main(){
int a=0;
int num=0;
scanf("%d",&num);
for(inti=2;i<num-1;i++){
if(num%i==0){
a++;


if(a==0){
printf("YES\n");
}else{
printf("NO\n");


方法三:
#include"stdio.h"
int main(){
printf("\t\t\t\t\thelloworld\n");
int a,i;
do{
printf("inputnumberjudgeprimenumber:\n");
scanf("%d",&a);
for(i=2;i<a;i++)
if(a%i==0)break;
if(i==a)
printf("%d是素数\n",a);
else
printf("%d不是素数\n",a);
}while(a!=0);

求求素数的C语言程序

// 素数,也叫质数,就是指除了1和该数本身以外,不能被其他任何整数整除的正数#include

#include

void main(){ int m, k, i, n=0; for(m=1; m <= 200; m=m+2) { k = sqrt(m); for(i=2; i <= k; i++) if(m % i == 0) break; if(i >= k + 1) { printf("%5d",m); n = n + 1; } }}请放心使用,有问题的话请追问

满意请及时采纳,谢谢,采纳后你将获得5财富值。

你的采纳将是我继续努力帮助他人的最强动力!

C语言-寻找素数

附代码:#include

#include

int main()//原理:设ab=c,a
<b,则有a<根号c<b。若设a恒小于根号c,则只需判断a是否为因数{int a, b;printf("请按从小到大输入两个素数:");scanf_s("%d %d", &a, &b);int n="0,m=0,sum" = 0;double i, j; i是从a到b的待筛选数,j是从2到根号i的除数,要判断j是否为i的因数for (i="a;" i <="c;" i++){m="0;int" c="int(pow(i," 0.5));for (j="2;" j j++){if ((i - int(i j))="=" 0.0){m++; m是i被从2到根号i的j除了之后,商为整数,即发现j是i的因数的次数}}if (m="=0){printf("找到素数:%d\n"," int(i));n++;sum="sum" + i;}}printf("大于等于%d,小于等于%d的素数的个数为:%d\n", b, n);printf("它们的和为:%d", sum);return 0;}
#include

int main() {

int i,n;

printf("please input n");

scanf("%d",&n);

for(i=2;i
<n&&n%i;i++);
if(i>=n) printf("Yes!\n");

else printf("No!\n");

return 0;

}

基本思路是判断数n与for循环变量i向除是否等于0,i从2到n-1,等于0表示不是素数

#include

bool isPrime(int n) {

if (n < 2) return 0;

if (n == 2) return 1;

for (int i = 2; i < n; i++)

if (n % i == 0) return 0;

return 1;

}

int main()

{

printf("597是素数吗? %d\n", isPrime(597));

printf("327是素数吗? %d\n", isPrime(327));

printf("197是素数吗? %d\n", isPrime(197));

return 0;

}

#include

阅读更多 >>>  34c胸围多少厘米

int main()

{

int a=0;

int num=0;

int i;

printf("输入一个整数:");

scanf("%d",&num);

for(i=2;i
<num;i++){
if(num%i==0){

a++;

}

}

if(a==0){

printf("%d是素数。\n", num);

}else{

printf("%d不是素数。\n", num);

}

return 0;

}

扩展资料:

质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。

基本算法:若 k%m==0 则说明 k 不是素数。

判断整数n是否为素数——采用枚举法求解。

采用枚举算法解题的基本思路:

(1)确定枚举对象、枚举范围和判定条件;

(2)枚举可能的解,验证是否是问题的解。

枚举算法的一般结构:while循环。

参考资料来源:百度百科-枚举法
</num;i++){

</n&&n%i;i++);

</b,则有a<根号c

求C语言中 判断素数的 代码!!!!!

方法有2个:
1、判断n是否能被2~√n间的整数整除
#include

#include

int main()

{

int n,i;

double k;

scanf("%d", &n);

k = sqrt(n);

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

{

if (n%i == 0) break;

}

if (i <=k) printf("This is not a prime.");

else printf("This is a prime");

return 0;

}

2、判断n是否能被2~n-1整除

#include

int main()

{

int i, n;

scanf("%d", &n);

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

{

if (n%i == 0)

break;

}

if (i < n) printf("This is not a prime.");

else printf("This is a prime.");

return 0;

扩展资料:

C语言的模块化程序结构用函数来实现,即将复杂的C程序分为若干模块,每个模块都编写成一个C函数,然后通过主函数调用函数及函数调用函数来实现一大型问题的C程序编写,因此常说:C程序=主函数+子函数。因此,对函数的定义、调用、值的返回等中要尤其注重理解和应用,并通过上机调试加以巩固。

判断语句(选择结构):

if 语句:“如果”语句;if—else 语句:“若…(则)…否则…”语句;switch 语句:“切换”语句;switch—case:“切换—情况”语句。

循环语句(循环结构):

while 语句:“当…”语句;do—while 语句:“做…当…(时候)”语句;for 语句:条件语句(即“(做)…为了…”语句)。

跳转语句(循环结构:是否循环):

goto 语句:“转舵”语句,也称“跳转”语句;break 语句:“中断”(循环)语句,即结束整个循环;continue 语句:“继续”语句(结束本次循环,继续下一次循环);return 语句:“返回”语句。

需要说明的是:

1、一个C语言源程序可以由一个或多个源文件组成。

2、每个源文件可由一个或多个函数组成。

3、一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。是整个程序的入口。

4、源程序中可以有预处理命令(包括include 命令,ifdef、ifndef命令、define命令),预处理命令通常应放在源文件或源程序的最前面。

5、每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号。(结构体、联合体、枚举型的声明的“}”后要加“ ;”。)

6、标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。

书写规则

1、一个说明或一个语句占一行。

2、用{} 括起来的部分,通常表示了程序的某一层次结构。{}一般与该结构语句的第一个字母对齐,并单独占一行。

3、低一层次的语句或说明可比高一层次的语句或说明缩进若干格后书写。以便看起来更加清晰,增加程序的可读性。在编程时应力求遵循这些规则,以养成良好的编程风格。

参考资料:百度百科-c语言

C语言中判断素数的代码如下:

#include

int is_prime(int n)

{

int i;

if(n<=1)

{

return 0;

}

for(i=2;i*i<=n;i++)

{

if(n%i==0)

{

return 0;

}

}

return 1;

}

int main()

{

int i,n=0,t=1;

printf("1000以内的素数排列:\n");

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

{

if(is_prime(i))

{

n++;

t++;

printf("%4d",i);

if(t>10)

{

printf("\n");

t=1;

}

}

}

printf("\n1000以内的素数共有%d个\n",n);

return 0;

}

扩展资料:

C语言中判断素数的其他代码:

#include

int main(void)

{

unsigned long num;

unsigned long div;

int isPrime;

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)

{

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;

}

}

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;

}

参考资料:

百度百科-C语言

方法又2个:

判断n是否能被2~√n间的整数整除

#include

#include

int main()

{

int n,i;

double k;

scanf("%d", &n);

k = sqrt(n);

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

{

if (n%i == 0) break;

}

if (i <=k) printf("This is not a prime.");

else printf("This is a prime");

return 0;

}

2.判断n是否能被2~n-1整除

#include

int main()

{

int i, n;

scanf("%d", &n);

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

{

if (n%i == 0)

break;

}

if (i < n) printf("This is not a prime.");

else printf("This is a prime.");

return 0;

}

拓展资料C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。

C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。

其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。

请大家不要局限于找约数这样的低效算法,看看我写的这个随机化的算法,采用费马小定理,应该对大家有帮助

#include

#include

#include

int mpow( int s, int t, int m )

{

long long f, p;

if ( t == 0 )

return 1;

f = mpow( s, t >> 1, m );

if ( t & 1 )

{

p = s * f * f;

return p % m;

}

p = f * f;

return p % m;

}

int Miller_Ribin( int s )

{

int i, p;

for ( i = 0; i < 10; i++ )

{

p = rand()% ( s - 1 ) + 1;

if ( mpow( p, s - 1, s ) != 1 )

break;

}

return i == 10;

}

int main( )

{

srand( time( NULL ) );

int x;

printf("请输入数: ");

scanf("%d", &x);

if ( x < 0 )

x = -x;

if ( x <= 1 )

printf("该数不是素数\n");

else

if ( Miller_Ribin( x ) )

printf("该数是素数\n");

else

printf("该数不是素数\n");

return 0;

}

int ss(int x)

{

int k;

for (k=2;k
<x;k++)
if (x%k==0)

return 0;

return 1;

}

main()

{

int i,n;

scanf("%d",&n);

if (ss(n))

printf("%d is soshu! ",n);

else

printf("%d is not soshu! ",n);

}

main()

{int i,x,y=1;

scanf("%d",&x);

for(i=2;i<=x/2;i++)

if(x%i==0) { y=0; break;}

printf(”%d\n”,y);

}

可以,如果输入的x是素数则输出1,否则输出0

基本思想:把m作为被除数,将2—INT( )作为除数,如果都除不尽,m就是素数,否则就不是。

可用以下程序段实现:

void main()

{ int m,i,k;

printf("please input a number:\n");

scanf("%d",&m);

k=sqrt(m);

for(i=2;i
<k;i++)
if(m%i==0) break;

if(i>=k)

printf("该数是素数");

else

printf("该数不是素数");

}

将其写成一函数,若为素数返回1,不是则返回0

int prime( m%)

{int i,k;

k=sqrt(m);

for(i=2;i
<k;i++)
if(m%i==0) return 0;

return 1;

}

扩展资料:

筛法求素数

一、基本思想

用筛法求素数的基本思想是:

把从1开始的、某一范围内的正整数从小到大顺序排列, 1不是素数,首先把它筛掉。剩下的数中选择最小的数是素数,然后去掉它的倍数。依次类推,直到筛子为空时结束。

如有:

1 2 3 4 5 6 7 8 9 10

11 12 13 14 15 16 17 18 19 20

21 22 23 24 25 26 27 28 29 30

1不是素数,去掉。剩下的数中2最小,是素数,去掉2的倍数,余下的数是:

3 5 7 9 11 13 15 17 19 21 23 25 27 29

剩下的数中3最小,是素数,去掉3的倍数,如此下去直到所有的数都被筛完,求出的素数为:

2 3 5 7 11 13 17 19 23 29

二、C++实现

1、算法一:令A为素数,则A*N(N>1;N为自然数)都不是素数。

#define range 2000

bool

IsPrime[range+1];

/*set函数确定i是否为素数,结果储存在IsPrime[i]中,此函数在DEV

C++中测试通过*/

void set(bool IsPrime[])

{

int i,j;

for(i=0;i<=range;++i)

IsPrime[i]=true;

IsPrime[0]=IsPrime[1]=false;

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

{

if(

IsPrime[i])

{

for(j=2*i;j<=range;j+=i)

IsPrime[j]=false;}}}2、

说明:解决这个问题的诀窍是如何安排删除的次序,使得每一个非质数都只被删除一次。 中学时学过一个因式分解定理,他说任何一个非质(合)数都可以分解成质数的连乘积。

例如,16=2^4,18=2 * 3^2,691488=2^5 * 3^2 * 7^4等。如果把因式分解中最小质数写在最左边,有16=2^4,18=2*9,691488=2^5 * 21609,;

换句话说,把合数N写成N=p^k * q,此时q当然是大于p的,因为p是因式分解中最小的质数。由于因式分解的唯一性,任何一个合数N,写成N=p^k * q;的方式也是唯一的。

由于q>=p的关系,因此在删除非质数时,如果已知p是质数,可以先删除p^2,p^3,p^4,... ,再删除pq,p^2*q,p^3*q,...,(q是比p大而没有被删除的数),一直到pq>N为止。

因为每个非质数都只被删除一次,可想而知,这个程序的速度一定相当快。依据Gries与Misra的文章,线性的时间,也就是与N成正比的时间就足够了(此时要找出2N的质数)。

代码如下:

#include

阅读更多 >>>  流行的编程语言,最常用编程语言是哪种?

#include

using namespace std;

int main()

{

int N; cin>>N;

int *Location=new int[N+1];

for(int i=0;i!=N+1;++i)

Location[i]=i;

Location[1]=0; //筛除部分

int p,q,end;

end=sqrt((double)N)+1;

for(p=2;p!=end;++p)

{

if(Location[p])

{

for(q=p;p*q<=N;++q)

{

for(int k=p*q;k<=N;k*=p)

Location[k]=0;

}

}

}

int m=0;

for(int i=1;i!=N+1;++i)

{

if(Location[i]!=0)

{

cout<
<location[i]<<" ";
++m;

}

if(m%10==0) cout<
<endl;
}

cout<
<endl<<m<<endl;
return 0;

}

该代码在Visual Studio 2010 环境下测试通过。

以上两种算法在小数据下速度几乎相同。

参考资料:百度百科-筛法求素数
</endl<<m<<endl;
</endl;
</location[i]<

</k;i++)
</k;i++)

如何编写一个C语言程序判断一个数是否是素数?

思路1:
判断一个整数m是否是素数,只需把m被 2 ~ m-1 之间的每一个整数去除,如果都不能被整除,那么m就是一个素数。代码如下:#include

int main(){int a=0; // 素数的个数int num=0; // 输入的整数printf("输入一个整数:");scanf("%d",&num);for(int i=2;i
<num;i++){if(num%i==0){a++; 素数个数加1}}if(a="=0){printf("%d是素数。\n"," num);}else{printf("%d不是素数。\n", num);}return 0;}
思路2:

另外判断方法还可以简化。m不必被 2 ~ m-1 之间的每一个整数去除,只需被 2 ~ 之间的每一个整数去除就可以了。如果m不能被 2 ~ 间任一整数整除,m必定是素数。例如判别17是是否为素数,只需使17被2~4之间的每一个整数去除,由于都不能整除,可以判定17是素数。代码如下:

#include

#include

void main(){int m; // 输入的整数 int i; // 循环次数int k; // m 的平方根 printf("输入一个整数:");scanf("%d",&m);// 求平方根,注意sqrt()的参数为 double 类型,这里要强制转换m的类型 k=(int)sqrt( (double)m );for(i=2;i<=k;i++)if(m%i==0)break;// 如果完成所有循环,那么m为素数// 注意最后一次循环,会执行i++,此时 i=k+1,所以有i>k if(i>k)printf("%d是素数。\n",m);elseprintf("%d不是素数。\n",m);return 0;}

编写一个C语言程序判断一个数是否是素数

目的:判断一个数是否为素数# include

int main(void)

{

int m;

int i;

scanf("%d",&m);

for(i = 2; i < m; i++) //2到(m-1)的数去除m

{

if(m% i == 0) // 判断能否整除

break;

}

if (i == m)

printf("YES!\n");

else

printf("No!\n");

}

for循环的功能:

①若能整除,通过break跳出函数;

②若一直到m-1都不能整除,此时i再自增1到m,不满足i < m跳出for循环,这时i = m。

扩展资料:

素数定理:

1、在一个大于1的数a和它的2倍之间(即区间(a, 2a]中)必存在至少一个素数。

2、存在任意长度的素数等差数列。

3、一个偶数可以写成两个合数之和,其中每一个合数都最多只有9个质因数。(挪威数学家布朗,1920年)。

4、一个偶数必定可以写成一个质数加上一个合成数,其中合数的因子个数有上界。(瑞尼,1948年)。

5、一个偶数必定可以写成一个质数加上一个最多由5个因子所组成的合成数。后来,有人简称这结果为 (1 + 5)(中国潘承洞,1968年)。

6、一个充分大偶数必定可以写成一个素数加上一个最多由2个质因子所组成的合成数。简称为 (1 + 2)。

参考资料来源:百度百科-质数

思路1:

判断一个整数m是否是素数,只需把m被 2 ~ m-1 之间的每一个整数去除,如果都不能被整除,那么m就是一个素数。代码如下:#include

int main(){int a=0; // 素数的个数int num=0; // 输入的整数printf("输入一个整数:");scanf("%d",&num);for(int i=2;i
<num;i++){if(num%i==0){a++; 素数个数加1}}if(a="=0){printf("%d是素数。\n"," num);}else{printf("%d不是素数。\n", num);}return 0;}
思路2:

另外判断方法还可以简化。m不必被 2 ~ m-1 之间的每一个整数去除,只需被 2 ~ 之间的每一个整数去除就可以了。如果m不能被 2 ~ 间任一整数整除,m必定是素数。例如判别17是是否为素数,只需使17被2~4之间的每一个整数去除,由于都不能整除,可以判定17是素数。代码如下:

#include

#include

void main(){int m; // 输入的整数 int i; // 循环次数int k; // m 的平方根 printf("输入一个整数:");scanf("%d",&m);// 求平方根,注意sqrt()的参数为 double 类型,这里要强制转换m的类型 k=(int)sqrt( (double)m );for(i=2;i<=k;i++)if(m%i==0)break;// 如果完成所有循环,那么m为素数// 注意最后一次循环,会执行i++,此时 i=k+1,所以有i>k if(i>k)printf("%d是素数。\n",m);elseprintf("%d不是素数。\n",m);return 0;}

思路1:

判断一个整数m是否是素数,只需把m被 2 ~ m-1 之间的每一个整数去除,如果都不能被整除,那么m就是一个素数。代码如下:#include

int main(){int a=0; // 素数的个数int num=0; // 输入的整数printf("输入一个整数:");scanf("%d",&num);for(int i=2;i
<num;i++){if(num%i==0){a++; 素数个数加1}}if(a="=0){printf("%d是素数。\n"," num);}else{printf("%d不是素数。\n", num);}return 0;}
思路2:

另外判断方法还可以简化。m不必被 2 ~ m-1 之间的每一个整数去除,只需被 2 ~ 之间的每一个整数去除就可以了。如果m不能被 2 ~ 间任一整数整除,m必定是素数。例如判别17是是否为素数,只需使17被2~4之间的每一个整数去除,由于都不能整除,可以判定17是素数。代码如下:

#include

#include

void main(){int m; // 输入的整数 int i; // 循环次数int k; // m 的平方根 printf("输入一个整数:");scanf("%d",&m);// 求平方根,注意sqrt()的参数为 double 类型,这里要强制转换m的类型 k=(int)sqrt( (double)m );for(i=2;i<=k;i++)if(m%i==0)break;// 如果完成所有循环,那么m为素数// 注意最后一次循环,会执行i++,此时 i=k+1,所以有i>k if(i>k)printf("%d是素数。\n",m);elseprintf("%d不是素数。\n",m);return 0;}

最简单的方法:用这个数分别除以比它小的整数(到2为止),如果都除不尽,那就是素数了。有一个能整除,就退出循环,显示不是素数。判断是否除尽,就是判断除数*商是否等于被除数。

善用百度,以下是摘自:http://zhidao.baidu.com/question/55091699.html

*求素数的三种方法

一:for(i=2;i<=(n-1);i++)

if(n%i==0)i在2到n-1之间任取一个数,如果n能被整除则不是素数,否则就是素数

二:for(i=2;i
<n 2;i++)
if(n%i==0) /*i在2到n/2之间任取一个数,如果n能被整除则不是素数,否则就是素数

三:for(i=2;i<(n=sqrt(n));i++)

if(n%i==0) /*i在2到sqrt(n)之间任取一个数,如果n能被整除则不是素数,否则就是素数,在下省了下面的输出步骤*/

/*在本程序中使用第三种方法来求解*/

#include

阅读更多 >>>  excel对错符号怎么打

#include

int main(void)

{

int i; /*外循环*/

int j; /*内循环*/

int flag; /*素数标志,flag为1则此数为素数*/

flag = 0;

//int n;

i = 2;

while( i <= 100)

{

j = 2;

flag = 1; /*假设此数为素数*/

while(j <= (int) sqrt(float(i)))

{

if(0 == (i %j))

flag = 0; /*根据第三种算法可知次数不为素数*/

j ++;

}

if(flag)

printf("%d\t",i);

i++;

}

printf("\n");

return 0;

}

1、首先打开编辑器软件,在里面新的C语言文件里引入头文件并输入主函数,在主函数中输入代码:

2、然后写入判断素数的逻辑,这里先引入一个scanf函数,接受用户输入的数值存入变量,对接收的变量判断其是否为素数,判断的依据是如果能被2到n-1中的某个数整除就是素数,否则就不是。最后把判断的结果打印出来即可:

3、最后编译运行调试一下程序,按下crtl+F5编译,在弹出的命令行中输入17这个素数,程序判断的结果是素数说明程序的逻辑是没有问题的。以上就是C语言判断素数的方法:

用c语言编写一个程序,判断输入的数是否是素数(质数)。

#include

#include

int main()

{

int i,j,n,flag;

int num;

/* 判断输入的数是否是素数 */

printf("请输入一个正整数:");

scanf("%d", &num);

for(i=2,flag=1; i<=(int)sqrt(num);i++)

{

if(num % i ==0)

{

flag=0;

break;

}

}

if(flag==1)

printf("%d 是一个素数。\n\n", num);

else

printf("%d 不是一个素数。\n\n", num);

/* 列出2~1000之间个位数是3或7的素数 */

printf("2~1000之间个位数是3或7的素数:\n");

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

{

for(j=2,flag=1; j<=(int)sqrt(i); j++)

if(i%j==0)

{

flag=0;

break;

}

if(flag==1 && (i%10==3 || i%10==7))

printf("%d\t",i);

}

/* 输出10个2~1000之间个位数是3或7的素数 */

printf("\n\n2~1000之间个位数是3或7的素数:\n");

for(i=2,n=0; i<1000;i++)

{

for(j=2,flag=1; j<=(int)sqrt(i); j++)

if(i%j==0)

{

flag=0;

break;

}

if(flag==1 && (i%10==3 || i%10==7))

{

n++;

if(n<=10)

printf("%d\t",i);

}

if(n>10)

break;

}

return 0;

}

用C语言编写一个程序,设计一个判断素数的函数

1.素数是一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,换句话说就是该数除了1和它本身以外不再有其他的因数;
2.在数据处理时只需要判读他的因子除了1和他本身就行了,而且只用计算到
这个数的开方就行了,因为后面的因子和前面的就会倒过来。如同
24
->
2
x
12

12
x
2
一样。
#include

int IsPrime(int n) // 判断是否为素数

{

if (n <= 1) return 0;

if (n % 2 == 0) return n == 2; // 如果是偶数,只要不是2,其他都是非素数

for (int i = 3; ; i += 2)

{

if (i > n/i) break; // 等价于 i*i > n, 不用开方

if (n % i == 0) return 0;

}

return 1;

}

int main()

{

int i, cnt = 0;

for (i = 1; i < 100; i++)

{

if (IsPrime(i))

{

printf("%3d ", i);

if (++cnt%5 == 0) // 每5个换行

printf("\n");

}

}

return 0;

}

将 if(y=1) 改为 if(y==1)

这个可以。

可以 将 for(i=2;i<=n/2&&flag==1;i++)

改为for(i=2;i<=sqrt(n)&&flag==1;i++)可增加效率加math头文件

#include

int prime(int n)

{int flag=1,i;

for(i=2;i<=n/2&&flag==1;i++)

if(n%i==0)

flag=0;

return flag;

}

void main()

{int x,y;

printf("请输入一个数\n");

scanf("%d",&x);

y=prime(x);

if (y==1) printf("这个数是素数\n");

else printf("这个数不是素数\n");

}

是y==0不是y=0

if (y=1) printf("这个数是素数\n");

应该是

if (y==1) printf("这个数是素数\n");

双等于

1.素数是一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,换句话说就是该数除了1和它本身以外不再有其他的因数;

2.在数据处理时只需要判读他的因子除了1和他本身就行了,而且只用计算到 这个数的开方就行了,因为后面的因子和前面的就会倒过来。如同 24 -> 2 x 12 和 12 x 2 一样。

#include

int IsPrime(int n) // 判断是否为素数{ if (n <= 1) return 0; if (n % 2 == 0) return n == 2; // 如果是偶数,只要不是2,其他都是非素数 for (int i = 3; ; i += 2) { if (i > n/i) break; // 等价于 i*i > n, 不用开方 if (n % i == 0) return 0; } return 1;}int main(){ int i, cnt = 0; for (i = 1; i < 100; i++) { if (IsPrime(i)) { printf("%3d ", i); if (++cnt%5 == 0) // 每5个换行 printf("\n"); } } return 0;}

判断素数c语言代码

判断一个数是否为素数的代码是boolcheck(int num){//素数是只能被1和它自身整除的数for(int i=2;i<=sqrt(num);i++){if(num%i==0)returnfalse;}returntrue;}。
一个数如果只能被1和自身整除,则该数为素数。
代码
代码是程序员用开发工具所支持的语言写出来的源文件,是一组由字符、符号或信号码元以离散形式表示信息的明确的规则体系。代码设计的原则包括唯一确定性、标准化和通用性、可扩充性与稳定性、便于识别与记忆、力求短小与格式统一以及容易修改等。
源代码是代码的分支,某种意义上来说,源代码相当于代码。现代程序语言中,源代码可以书籍或磁带形式出现,但最为常用格式是文本文件,这种典型格式的目的是为了编译出计算机程序。
计算机源代码最终目的是将人类可读文本翻译成为计算机可执行的二进制指令,这种过程叫编译,它由通过编译器完成。源代码是相对目标代码和可执行代码而言的。 源代码就是用汇编语言和高级语言写出来的地代码。
以上内容参考:百度百科——代码

怎么用C语言写出判断素数的程序?

1、写我们的头文件和主函数。写好我们的开头。
2、编写定义变量,我们语言定义一个i来用于后面的for循环。
3、我们输入一个数,在那之前我们要有一个printf()提示一下。
4、利用for循环看一看从2到n-1是否能被n整除,如果能就要break。
5、判断素数,如果程序正常结束,就i>=n,说明他就是素数。
6、如果通过break结束,他就会i
<n,所以他就不是素数。
7、输出最后结果。
</n,所以他就不是素数。

网站数据信息

"判断素数的c语言程序,如何编写一个C语言程序判断一个数是否是素数?"浏览人数已经达到20次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:判断素数的c语言程序,如何编写一个C语言程序判断一个数是否是素数?的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!