C语言输入一个整数,判断是否是质数

输入一个整数,判断是否是质数
我们学到循环的。。while 和 do while

这个问题是在这里的 谁能帮我解决下 谢谢

还有就是C语言 觉得好难哦有什么好点的办法 学吗

第1个回答  推荐于2018-03-19
单看素数判断函数,楼上的算法效率已经很高了,但是 For 循环条件 i * i <= n 效率并不是想象的那么高,由于每次循环i都是变化的因此每次for循环的表达式判断都有一次乘法和比较运算 如果改成这样就不会了 i <= sqrt(n) 虽然用了一次比较耗时的开方运算但是由于编译器的优化,开方运算只在整个判断素数函数中执行一次

修改后代码为
#include <stdio.h>
#include <math.h>

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

int main(void)
{
int i = 2;
for( ; i < 100; i++)
if(isPrime(i))
printf("%d\n", i);
return 0;
}

BTW:当然,如果是求批量的素数的话,这个算法效率也是很低的,楼主可以去搜索素数求法的其他算法。
第2个回答  2008-03-23
#include <stdio.h>

int isPrime(int n)
{
int i = 2;
for( ; i * i <= n; i = (i + 1) | 1)
if(n % i == 0)
return 0;
return n > 1;
}

int main(void)
{
int i = 2;
for( ; i < 100; i++)
if(isPrime(i))
printf("%d\n", i);
return 0;
}本回答被提问者和网友采纳

C语言输入一个整数,判断是否是质数?
{ int number,i;\/\/定义变量 printf("请随机输入一个数:");\/\/提示语句 scanf("%d",&number);\/\/键盘输入需要判断的数 for(i=2;i<=number-1;i++)\/\/循环从2开始,到这个数的掐前一个数为止 { if(number%i==0)\/\/如果取余结果为0 break;} if(i<number){ printf("%d不是素数",numbe...

遇到一个C语言问题。输入一个整数,判断其是否为素数。
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",...

c语言中如何判断一个数是否是质数?
判断一个数是否是质数在于看这个数字是否只能被1和它本身所整除的整数。但是有一个例外,1不属于质数。c语言中的质数:数学的概念中,素数就是只能被1和它本身所整除的整数。但是有一个例外,就是1不属于素数。所以你在输入一个整数并加以判断的时候就需要考虑这种情况了。如下即可:while(scanf("%lu"...

判断是否为素数:输入一个正整数m,判断其是否为素数。(C语言编程设计思路...
最简单的思路,就是从2开始逐个判断能否整除,如果存在本身以外因子,就不是质数,否则是质数。代码:int is_prime(int n){int i;for(i = 2; i <= sqrt(n); i ++)if(n%i == 0) return 0;return 1;}int main(){ int n; scanf("%d",&n); if(is_prime(n)) printf("...

C语言中如何判断一个数是否为质数
在C语言中,判断一个数是否为质数可以通过以下步骤实现:1、判断该数是否为1或0,因为这两个数都不是质数。2、判断该数是否能被2-100之间的任何数字整除。如果可以,那么它就不是质数。这是因为大于2的所有质数都可以写成多个2或5的次方相乘的形式,而2和5以外的任何数字都无法整除2和5。因此,...

怎么用C语言求fort和if输入一个数判断是否为质数还是合数
C语言实现如下:include<stdio.h>#include<math.h>#include<stdlib.h>void main(){int n,i,b=1;scanf("%d",&n);if (n==1) {printf("1既不是质数,也不是合数\\n");exit(0);}for(i=2;i<=(int)sqrt(n);i++){if (n%i==0) {b=0;break;}}if (b) printf("%d是质数\\n"...

基础C语言 大神能不能告诉我这个程序是干嘛的
你好,这个程序功能是输入一个数,判断是否为质数。也就是能不能被除自身外的数字整除。int main(){ void judge(int n);int i;scanf("%d",&i);\/\/输入整数 judge(i);return 0;} void judge(int n) \/\/判断能不能被2到n-1的数整除,能就输出no,不能输出yes { int j;for(j=2;j<n...

用c语言编写一个程序,判断输入的数是否是素数(质数)。
\/* 判断输入的数是否是素数 *\/ 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);\/...

键盘输入一个正整数,程式设计判断其是否为素数(即质数)
c#从键盘输入一个正整数,判断该数是不是素数(质数)intisPrime(intnum){ if(num<=1)return-1;elseif(num==2)return1;else{ for(i=2;i<=Math.Sqrt(num);i++){ if(num%i==0)return0;} return1;} } 输入一个正整数n,判断n是否是素数。#include<stdio.h> intmain(){ inti,j,n;n...

C语言中输入一个数判断是否为质数,下面是答案,有我的一个问题,求高手回...
因为 j=k+1的时候,就表明i是素数了。这是else的情况。j=k+1就表明for循环是全部运行完结束的,而不是中途break结束的,也就是说没有找到i的因子,所以i是素数。

相似回答