c语言中判断一个正整数是否为素数,若是素数则输出该素数,若不是则输出该数所有的因子

#include<stdio.h>#include<math.h>voidmain(){intm,i,k,a;printf("请输入一个一个整数:");scanf("%d... #include<stdio.h>
#include<math.h>
void main()
{
int m,i,k,a;
printf("请输入一个一个整数 :");
scanf("%d",&m);
k=(int)sqrt(m);
for(i=2;i<=k;i++)
{if(m%i==0)
{ a=m/i;
printf("%d,%d\n",a,i);
}
else
{for(i=2;i<=k;i++)

{if(m%i==0);break;
if(i>k)
printf("%d 是一个素数\n",m);
}

}
}
//错在哪了,怎么改啊。
展开
 我来答
cdyzxy
推荐于2017-12-16 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:85%
帮助的人:3705万
展开全部
普通判断素数,只要找到因数时就会用break结束判断,这里就用个标志来表明找到了因数而继续找下一个因素即可,最后根据标志来判断是否素数。另外,由于m/2一般会稍大于根号m所以用这个取代调用sqrt函数,如果要调用要写:k=sqrt((double)m);。

#include<stdio.h>
void main()
{ int i,k,m,a;
printf("请输入一个一个整数 :");
scanf("%d",&m);
for ( i=2,a=1;i<m/2;i++ ) if ( m%i==0 ) { printf("%d ",i); a=0; }
if ( a ) printf("%d是一个素数\n",m); else pritf("\n");
}
xoaxa
2014-04-07 · TA获得超过8609个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3462万
展开全部
#include <stdio.h>
#include <math.h>

int isPrime(int n) {
int i,flag = 1;
if(n < 2) return 0;
for(i = 2; i < sqrt(n) && flag; ++i)
if(n % i == 0) flag = 0;
return flag;
}

int main() {
int m,i,a;
printf("请输入一个正整数:");
scanf("%d",&m);
if(isPrime(m)) printf("%d是一个素数\n",m);
else {
for(i = 2;i <= (int)sqrt(m);i++) {
if(m%i == 0) {
a = m/i;
printf("%d,%d\n",i,a);
}
}
}
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
White_MouseYBZ
2014-04-08 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6576万
展开全部
//#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
bool prime(int n){
int i;
if(n>2 && !(n&1) || n<2) return false;
for(i=3; i*i<=n;i+=2)
if(!(n%i)) return false;
return true;
}
void main(void){
int nDec,i,n=2;
printf("Type an integer...\nn=");
scanf("%d",&nDec);
if(nDec==1){
printf(" 1 is no primer or sum...\n");
return;
}
if(!prime(nDec)){
printf("%d = ",nDec);
while(!prime(nDec))
for(i=n;;i==2 ? i++ : i+=2){
if(!prime(i)) continue;
if(!(nDec%i)){
printf("%d x ",n=i);
nDec/=i;
break;
}
}
printf("%d.\n",nDec);
}
else printf("%d is a primer!\n",nDec);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Rankabc
2014-04-08 · TA获得超过3561个赞
知道大有可为答主
回答量:3705
采纳率:59%
帮助的人:1059万
展开全部
#include<stdio.h>
#include<math.h>
void main()
{
int m,i,j=2,k;
printf("请输入一个一个整数 :");
scanf("%d",&m);
k=(int)sqrt(m);
for(i=2;i<=k;i++)
    {
if(m%i==0)
{
printf("%d=",m);
while(m!=1)
{
if(m%j==0)
{
m/=j;
printf("%d",j);
if(m!=1)printf("*");
j=1;
}
j++;
}
printf("\n");
return;
}
}
printf("%d 是一个素数\n",m);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式