用c语言判断一个数是不是素数
㈠ c语言编写一个程序判断一个数是否为素数急求
目的:判断一个数是否为素数
#include<stdio.h>
intmain(void)
{
int m;
inti;
scanf("%d",&m);
for(i=2;i< m;i++) //2到(m-1)的数去除m
{
if(m%i==0)//判断能否整除
break;
}
if(i== m)
printf("YES!
");
else
printf("No!
");
}
for循环的功能:
①若能整除,通过break跳出函数;
②若一直到m-1都不能整除,此时i再自增1到m,不满足i< m跳出for循环,这时i= m。
(1)用c语言判断一个数是不是素数扩展阅读:
素数定理:
1、在一个大于1的数a和它的2倍之间(即区间(a,2a]中)必存在至少一个素数。
2、存在任意长度的素数等差数列。
3、一个偶数可以写成两个合数之和,其中每一个合数都最多只有9个质因数。(挪威数学家布朗,1920年)。
4、一个偶数必定可以写成一个质数加上一个合成数,其中合数的因子个数有上界。(瑞尼,1948年)。
5、一个偶数必定可以写成一个质数加上一个最多由5个因子所组成的合成数。后来,有人简称这结果为(1+5)(中国潘承洞,1968年)。
6、一个充分大偶数必定可以写成一个素数加上一个最多由2个质因子所组成的合成数。简称为(1+2)。
㈡ C语言如何判断素数
遍历2到100之间所有整数,然后逐一判断是否为素数,如果是则存入数组。
最终遍历数组输出每个值即可。 具体如下:
1、素数的判断。
根据素数定义,除了1和本身不存在其它约数的正整数为素数。
所以在C语言中判断n是否为素数可以从2开始到到n-1逐一尝试,如果可以整除说明不是素数。
更进一步,可以从2判断到n/2或者n的算术平方根,如果不存在约数,那么即为素数。
除此以外,判断素数的算法还有素数筛等。
2、判断素数的函数:
以遍历判断约数的方法为例,函数可以编写如下:
intisPrime(intn)//判断n是否为素数,如果是则返回1,否则返回0.
{
inti;
for(i=2;i<=(int)sqrt(n);i++)//从2到算术平方根遍历。
if(n%i==0)return0;//存在约数,不是素数,返回0.
return1;//不存在约数,返回1,表示为素数。
}
3、整体代码示例:
#include<stdio.h>
#include<math.h>
intisPrime(intn)//之前的函数。
{
inti;
for(i=2;i<=(int)sqrt(n);i++)
if(n%i==0)return0;
return1;
}
intmain()
{
intn;
inta[100];
intcnt=0;
for(n=2;n<=100;n++)//遍历2到100所有整数。
if(isPrime(n))//判断是素数
a[cnt++]=n;//存入数组。
for(n=0;n<cnt;n++)//遍历存放素数的数组。
printf("%d",a[n]);//输出。
printf(" ");
return0;
}
运行结果如下:
㈢ c语言判断是不是素数的程序
1、首先打开CodeBlocks,创建一个新项目。
㈣ 用C语言编写一个程序,设计一个判断素数的函数
1.素数是一个大于1的自然数,除了1和它本身外,不能被其他培樱自然数整除,换句话说就是该数除了1和它本身以外型拦不再有其他的因数;
2.在数据处理时只需要判读他的因子除了1和他本身就行了,而且只用计算到 这个数的开方就行了,因为后面的因子和前面的就会倒过来。如同 24 -> 2 x 12 和 12 x 2 一样。
#include<stdio.h>
intIsPrime(intn)//判断是否为素数
{
if(n<=1)return0;
if(n%2==0)returnn==2;//如果是偶卜中胡数,只要不是2,其他都是非素数
for(inti=3;;i+=2)
{
if(i>n/i)break;//等价于i*i>n,不用开方
if(n%i==0)return0;
}
return1;
}
intmain()
{
inti,cnt=0;
for(i=1;i<100;i++)
{
if(IsPrime(i))
{
printf("%3d",i);
if(++cnt%5==0)//每5个换行
printf(" ");
}
}
return0;
}
㈤ c语言如何判断一个数是整数还是素数
以下是判断代码:
#include <math.h>
#include <stdio.h>
int is_prime(int num) {
if (num <= 1) {
return 0; // 小于等于1的数不是素数
}
if (num <= 3) {
return 1; // 2和3是素数
}
if (num % 2 == 0 || num % 3 == 0) {
return 0; // 排除能被2或3整除的数
}
// 只需检查到sqrt(num),因为如果num有因子,必有一个小于等于它的算术平方根
for (int i = 5; i * i <= num; i += 6) {
if (num % i == 0 || num % (i + 2) == 0) {
return 0; // 若能被5或者能被5+2整除的数,不是素数
}
}
return 1; // 其他情况是素数
}
int main() {
int number;
printf("Enter an integer: ");
scanf("%d", &number);
if (is_prime(number)) {
printf("%d is a prime number.\n", number);
} else {
printf("%d is not a prime number.\n", number);
}
return 0;
}
㈥ 用C语言编写判断一个数是否是素数的程序
1、打开ubuntu并开启一个终端,输入命令vim is_prime.c,打开编辑页面,输入预处理指令#includestdio.h用于在主函数中调用判断函数。然后定义一个函数int is_prime(int n),即判断整数n是否为素数。
2、首先,判断这个数是否小于2.若是,则直接返回0,即表示它不是一个素数。
3、然后定义中间的因数i,初始值为2。依次使n对i取余数,看n能否整除i,然后令i自增直到i的平方大于n。在这过程中,如果遇到n能整除i,则说明n不是一个素数。如果循环能够直到i的平方大于n才结束,说明n是一个素数。
4、接下来,我们使用主函数进行测试,使用printf(%d : %dn, n, is_prime(n))的格式进行输出。如果输出结果为0,说明不为素数;结果为1,说明是一个素数。
测试的数据依次是2,4,9,15, 17, 23, 25。
5、退出编辑器vim,然后使用gcc编译并运行它,得到结果。通过结果我们可以看出,预期的结果与我们对于素数的认知是相同的,说明我们的程序编写没有错误。以下是所有的源代码:
#include stdio.h
//判断一个数是否为素数的函数定义
int is_prime(int n)
{
//判断n是否小于2.若小于则直接返回0
//表示n不是一个素数
if(n
2)
return 0;
//定义一个中间变量i,初始化i=2
int i = 2;
//依次判断每一个不大于根号n的i是否能被n整除
for(i = 2; i * i = n;i++)
{
//如果能够整除
if(n % i == 0)
//直接返回0,表示n不是一个素数
return 0;
}
//如果程序运行到这里,说明i*i大于n
//说明n是一个素数
return 1;
}
int main()
{
printf(%d : %dn, 2, is_prime(2));
printf(%d : %dn, 4, is_prime(4));
printf(%d : %dn, 9, is_prime(9));
printf(%d : %dn, 15, is_prime(15));
printf(%d : %dn, 17, is_prime(17));
printf(%d : %dn, 23, is_prime(23));
printf(%d : %dn, 25, is_prime(25));
return 0;
}
工具/材料
ubuntu,vim,gcc