十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
还有一个错误,C语言中没有bool类型,默认返回值是0,你可以一个一个类型的函数检测、float,没有返回值时、double类型的函数,你这个程序不只是逻辑不能那样说,但是如果是long或者char型时,返回值就不是0了,如果是返回值int。
创新互联为企业提供:品牌网站设计、网络营销策划、小程序设计、营销型网站建设和网站运营托管,一站式网络营销整体服务。实现不断获取潜在客户之核心目标,建立了企业专属的“成都全网营销”,就用不着再为了获取潜在客户而苦恼,相反,客户会主动找您,生意就找上门来了!
另外多说一句、算法错了
参考代码如下:
#include "stdio.h"
void decompose(int n)
{
int i,fac=1;
while(n1){
for(i=2;i=n;i++)
if(n%i==0){
fac=i;
break;
}
if(n!=fac)
printf("%d*",fac);
else
printf("%d",fac);
n/=fac;
}
}
int isPrime(int x)
{
int i;
if(x=1)
return 0;
for(i=2;ix;++i)
if(x%i==0) return 0;
return 1;
}
int main( )
{
int n;
scanf("%d",n);
if(n=0){
printf("error");
return 0;
}
if(isPrime(n))
printf("没有因子,是素数");
else{
printf("%d=",n);
decompose(n);
}
}
#include stdio.h
int fun(int x)//
{
if(x2)
return 0;//返回0,非素数
for(int i=2;i*i=x;i++)
if(x%i==0)
return 0;
return 1;//返回1,素数
}
int main()
{
int n;
scanf("%d",n);
if(fun(n)==1)
printf("%d是素数\n",n);
else
printf("%d不是素数\n",n);
return 0;
}
/判断是不是素数
#includestdio.h
int prime(int a);//函数声明
int main()
{
int n,i;
scanf("%d",n);
if(prime(n)==1) //return返回值1
printf("prime");
else
printf("not prime") ;
}
int prime(int a)
{
int i;
for(i=2;ia;i++)
if(a%i==0)
return 0;//a%i==0不成立
else
return 1;//a%i==0成立
}
扩展资料:
素数的算法
1、素数:除了1和本身外无法被其他自然数整除的数,叫做素数,也称质数,如:2,3,5,7一系列。
2、合数:比1大但不是素数的数称为合数,如:8,9,10一系列。
3、特殊的数字:1和0既不是素数也不是合数。
4、算法: 1确定性算法 2随机性算法 3Eratosthenes算法。
素数又称质数,所谓素数是指除了 1 和它本身以外,不能被任何整数整除的数,例如17就是素数,因为它不能被 2~16 的任一整数整除。
思路1、判断一个整数m是否是素数,只需把 m 被 2 ~ m-1 之间的每一个整数去除,如果都不能被整除,那么 m 就是一个素数。
思路2、判断方法还可以简化。
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之间有无因子即可。
两种思路的代码请看解析。
拓展资料:
素数(prime number)又称质数,有无限个。素数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。
C语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。
参考资料:
百度百科——素数
百度百科——C语言
#include stdio.h
#include math.h
//判断是否为素数的函数
int isPrime(int n)
{
int i=2;
while(i=(int)sqrt(n))
{
if(n%i == 0)
return 0; //不是素数,直接返回0
else
i++;
}
return 1;
}
int main()
{
int n,i;
printf("输入一个正整数: ");
scanf("%d",n);
for(i=2;i=n;i++)
{
if(isPrime(i)) //调用函数,如果该数为素数,则输出
printf("%d ",i);
}
printf("\n");
return 0;
}
示例运行结果:
输入一个正整数: 50
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47