遇到一个C语言问题。输入一个整数,判断其是否为素数。

作者&投稿:校帜 (若有异议请与网页底部的电邮联系)
C语言 判断一个数是否为素数???~

你利用的是这个循环:让一个待检测的数依次除以2,3,4……一直到该数的平方根,如果能整除就说明该数不是素数。
依照你的循环for(i=2;ik,此时就可以断定m是素数了
o(∩_∩)o

#include
int isprime(int n)
{
if(n<2) return 0;
for(int i=2;i<=n/2;i++)
if(n%i==0) return 0;
return 1;
}
void main()
{
int k;
scanf("%d",&k);
if(isprime(k))
printf("%d is a prime.
",k);
else
printf("%d is not a prime.
",k);
}

x/2

程序分析: 

1.质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。 

2.nn能被mm整除,则m≤n2m≤n2,所以只需要穷举m∈[2,n2]m∈[2,n2]即可,若在穷举过程中出现了nn的情况则n是质数,若mm能自加到m=n2m=n2则n不是质数。

#include "stdio.h"

void main()

{

int i,x,y=1;

scanf("%d",&x);

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

if ( y==0)break;

printf("%d
",y);

}

输入100,运行后输出1。

扩展资料:

C语言需要说明的是:

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

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

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

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

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

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

参考资料:

百度百科-c语言



#include "stdio.h"
#include "iostream"
int main()
{
int i,x,y=1;
scanf("%d",&x);
for(i=2;i<=x/2;i++)//i从2到x/2,将x除以i,如果能整除,说明x不是素数,如果都不能整除,x为素数
if(x%i == 0)//当i大于x/2时,设t,使i*t=x,可得t<2,也就是说将不存在i,使x能整除i得整数t(1除外)
{
y=0;
break;
}
printf("%d\n",y);
}

如果回答满意别忘了选最佳答案~

#include
"stdio.h"
#include
"iostream"
int
main()
{
int
i,x,y=1;
scanf("%d",&x);
for(i=2;i<=x/2;i++)//i从2到x/2,将x除以i,如果能整除,说明x不是素数,如果都不能整除,x为素数
if(x%i
==
0)//当i大于x/2时,设t,使i*t=x,可得t<2,也就是说将不存在i,使x能整除i得整数t(1除外)
{
y=0;
break;
}
printf("%d\n",y);
}
如果回答满意别忘了选最佳答案~

你可以填个根号x后取整的数 ,这样可以减少循环次数。还可以再用个I++,因为偶数肯定不是质数(除了2)。

#include <stdio.h>
#include <math.h>
void mian()
{ int i,x,y=1;
scanf("%d",&x);
for(i=2;i<=sqrt(x);i++)
if { y=0;break;}
printf("%d\n",y);
}


c语言编程问题 ,输入带有冒号的字符串到一个数组中,要求清除冒号和冒号...
include<stdio.h>int main(){char ff[200],*p,*q; gets(ff); for(p=q=ff;*p!=':';p++); for(;*q++=*++p;); puts(ff); return 0;}

C语言中的一个小问题?
include <stdio.h> include <math.h> int main(){ float x=2.5 ,a=7,y=4.7f,z;z=x+(int)(a)%3*(int)(x+y)%2\/4;\/\/被取余的数不能为float类型 printf("%f",z);getchar();\/\/掉了字母“ar”}

C语言的一个小问题
(1)按括号优先的顺序(a&&b) ,&&符号:当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false (2)!只有同为假时才为假。。。(3) || 任何一个值为TRUE(或者两个都为TRUE),则返回值为TRUE。如果两个运算符都是FALSE,则返回值为...

搞懂这8个C语言问题,你也能进大厂
高懂这8个c语言问题,你也能进大厂1、用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题)。define SEC_YEAR (365*24*60*60)UL考察点:1.#define语法的基本知识(例如:不能以分号结束,括号的使用,等等)。2.懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何...

下边是一个简单的C语言问题
外面的for循环继续执行),接下来就是a=5的情况了,以此类推...我再罗嗦下吧,里面的for循环是用来判断一个数是不是素数,因此一旦发现不是素数,就可以跳出这个for循环了,比如刚刚说的4已经能被2整除了,就知道它不是素数了,自然也就不需要考虑4能不能被3整除了...所以一旦判断不是素数,用...

C语言问题程序设计题例题 4-8 穷举算法 这一题 那两句for是什么意思...
一、代码解释:for(m=0 ;m<=9 ;m++)解释:m(根据题意代表男人人数),m从0遍历到9 for(w=0 ;w<=12 ;w++)解释:w(根据题意代表女人人数),w从0遍历到12 printf里的“\\t”表示Tab键的大空格(显示得好看一些)二、程序思路 很简单暴力枚举,因为男+女+小孩=36,那么男人可能是0~9个(...

一个c语言字符指针问题!
理论上,这种错误很明显,所以一般的编译器会检查出来,说编译器检查不到的说法是错误的。但是因为C语言是弱类型语言,检查出来也不汇报告,换做C++就不行了,会告诉你,ch="abcdefg",这句话有问题。因为"abcdefg"是一个const char [8],但是ch是一个 char *这种转换很危险。--- 2、复制不行...

c语言的一个循环问题
当i=1时,即此多项式只有一项也就是2,由于term的初值是0,所以此时term=0*10+2=2;sum+=term 即表示 sum=sum+term;此时sum = 2,它其实就是起一个累加的作用 当 i =2时,此多项式有两项,也就是2+22;经过前一次循环,此时变量term的值已经变成了2,此时再将term的值代入到term =term...

一个关于C语言中二维数组的问题(如何判断数组中的数全为1?)
最直接的办法就是调用函数,将该数组作为实参传递,然后在函数中定义一个变量flag作为标记,用循环遍历这个二维数组 如果数组元素为1则将flag置为1继续扫描,否则置为0并退出循环 返回flag,flag为1则表示数组元素全为1,否则不全为1

一个c语言基础性问题、
如果是有符号数,则最高位为符号位,0表示正数,1则表示负数。正数用原码表示,负数则用补码表示(所谓补码是指将原码求反后加1所得)。对于1个字节,位的编号从低到高是0...7,即bit7是符号位,0...6位为数值。对于-1,原码是1,即0000001,求反后为1111110,再加1得1111111,添加符号位后为...

武江区18838384590: 遇到一个C语言问题.输入一个整数,判断其是否为素数. -
谯科阿奇: x/2 程序分析: 1.质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数. 2.nn能被mm整除,则m≤n2m≤n2,所以只需要穷举m∈[2,n2]m∈[2,n2]即可,若在穷举过程中出现了nn的情况则n是质数,若mm能自加到m=n2m=n2则n不...

武江区18838384590: C语言:编写一个程序,要求输入一个整数,输出其阶乘 -
谯科阿奇: 程序如下: #include "stdioh"int main(void){int i;int acc=1;//用于存放阶乘printf ("请输入一个整数i=");scanf ("%d",&i);for(;i>0;i--){acc*=i;}printf("该数的阶乘为acc=%d ",acc);return 0;}运用for循环来求阶乘. 运行结果: 如求十的C语言:编写一个程序,要求输入一个整数,输出其阶乘

武江区18838384590: 超级精练的一道C语言编程题要求输入一个整数范围在0到95之间1.
谯科阿奇: #include "stdio.h" void main(){ long int num,temp,tmp=10; int i,j,total=0; printf("请输入一个整数:"); scanf("%d",&num); temp=num; while(temp!=0){ temp=num/tmp; tmp*=10; total++; } printf("整数位数为:%d\n",total); tmp/=100; temp=10; printf("整数反序为:"); for(i=1;i 全部

武江区18838384590: C语言程序题,任意输入一个整数,编一个程序,使其输出输出相应的原码、反码及补码. -
谯科阿奇: k if ((j+1)%8;;);k++) { f[k]=y[k];for(k=j;);stdio; b[k]=y[k];2,k;}else w=0; y[j]=0,n; for( k=0:"i;else f[k]=1; if ((j+1)%8; m=abs(n):"k>请输入一个整数!=0) for(;k--)printf(" for(k=0; for(k=0;y[j]=1,j:":"=0) { for(j=0;);printf("!=0;j++) y[j]=0; i=i+1;j++) y[j]=a[j];反...

武江区18838384590: 两道C语言编程题:一、输入一个整数,求它的位数以及各位数字之和. -
谯科阿奇: 一:#include<stdio.h> void main() { int a,i=0,sum=0; scanf("%d",&a); while(a) { sum+=(a%10);//sum是个位数之和 a/=10; i++;//i为位数 } printf("%d位数,各位数字之和为%d\n",i,sum); } 二:#include<stdio.h> int issxh(int number) { int x1,x2,x3;...

武江区18838384590: 用C语言编程:输入一个整数,判断这个数是奇数还是偶数. -
谯科阿奇: #include "stdio.h" main() { int x; printf("请输入一个整数"); scanf("%d",&x); if(x%2 == 0) printf("%d是偶数\n",x); else printf("%d是奇数\n",x); }C语言: 是一门通用计算机编程语言,应用广泛.C语言的设计目标是提供一种能以简...

武江区18838384590: C语言 输入一个整数x,判断其为奇数 还是偶数 -
谯科阿奇: x%2==1,判断奇数为Yes 偶数为No x%2==0,判断偶数为Yes 奇数为No

武江区18838384590: 编写一个C语言程序.输入一个整数,判断n的每位数字是否都相同,若相同则输出“YES”,否则输出NO. -
谯科阿奇: int n; int isSame = 1; int charge; scanf("%d",&n); charge = n%10; while(n != 0){if(n%10 != charge){isSame = 0;break;}n = n/10; } if(isSame == 1)printf("YES"); elseprintf("NO");

武江区18838384590: 遇到c语言问题,输入一个数,for循环内if语句,条件不符合重新输入. -
谯科阿奇: 你可以用while来实现循环输入,没必要用goto,这个语句已经不建议使用了,楼上的正解

武江区18838384590: c语言问题 从键盘输入一个整数,把此整数之前的所有素数显示出来 我的哪错了? -
谯科阿奇: 你的程序有些错,我改了下:#include<stdio.h> void main() { int i,k,n,flag; printf("inter the n:"); scanf("%d",&n); for(i=2;i<n;i++) { flag=0; for(k=2;k<i;k++) if(i%k==0) {flag=1; break;} if(flag==0) printf("%3d",i); }// getch(); }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网