C语言 素数判断 1为素数 0为非素数,但不管我输入什么数字都显示是素数

作者&投稿:老以 (若有异议请与网页底部的电邮联系)
用C语言判断素数输出0或1,这是我编的,也是运行输完数字按回车后什么都没有~

你好!!注意篮圈的地方,j 的值,是从2 开始循环的,除数不能是 0

完整的代码是:
#include "stdio.h"int main(){ int panduan(int k); int k,i; printf("请输入一个数让系统判断是否为素数:
"); scanf("%d",&k); // 输入参数 k k=panduan(k); // 传入参数 k,返回值给 k if(k>0) // 根据返回值,判断是不是素数 {printf("1");} else printf("0"); return 0;} int panduan(int k) { int j=0; for(j=2;j<=k/2;j++) // 从 2 开始循环 if(k%j==0) { k=0; break; // 不是素数跳出 }return k; }

源程序代码以及算法解释如下:
#define _CRT_SECURE_NO_WARNINGS
#include
int Func(int m)//判断函数
{
int n = 2;
while (n <= m && (m%n))//判断是否能被其他数整除
n++;
if (m == n)
return 1;
else
return 0;
}
int main()
{
int M_num;//定义变量
printf("请输入需要判断的数:
");//文字提示
scanf("%i", &M_num);//循环输入数组元素
int i = Func(M_num);//判断是否是素数
if (i == 1)//输出结果
printf("输入的数是素数");
if (i == 0)
printf("输入的数不是素数");
printf("
");
return 0;
}
程序运行结果如下:




扩展资料:
输出1-100之间的所有素数程序如下:
#include
int PrimeNumer(int x) //定义一个函数判断
{
assert(x > 0); //判断
int i; //被除数
for (i = 2; i < x; i++)
{
if (x%i == 0)
{
return 0; //表示正常终止
}
}
return 1; //只是给主调函数一个标志,说明他的执行过程中遇到异常情况。 然后就返回主调函数来处理,继续执行。
}
int main()
{
int i,a;
int count = 0;
for (i = 2; i < 101; i++)
{
if (PrimeNumer(i)) //调用函数来判断
{
count++; //加入了一个计数器
printf("%d
", i);
}
}
printf("素数出现的次数%d", count);
system("pause");
return 0;
}

#include<stdio.h>
int isPrime(int x){
    int i;
    if(x>3)
        for(i=2;i<=x/2+1;i++)
            if(x%i==0) return 0;
    return 1;
}
int main(){
    int m;    
    printf("Input Number:");
    scanf("%d",&m);
    if(isPrime(m))
        printf("%d is a Prime number
",m);
    else
        printf("%d is not a Prime number
",m);
    return 0;
}

调试过了,可行的、优化后的代码



for (i = 2; i <= x - 1; i++)
{
    if (x % i == 0)
        return 0;
}
return 1;

IsPrime最后的for循环改成上面这样



循环的判断时,一个不能整除就返回1了——————要等循环结束,才知道是否最终能整除。

~


宿城区17128557323: C语言 素数判断 1为素数 0为非素数,但不管我输入什么数字都显示是素数 -
化尤法洛: #include int isPrime(int x){ int i; if(x>3) for(i=2;i if(x%i==0) return 0; return 1; } int main(){ int m;printf("Input Number:"); scanf("%d",&m); if(isPrime(m)) printf("%d is a Prime number\n",m); else printf("%d is not a Prime number\n",m); return 0; }调试过了,可行的、优化后的代码

宿城区17128557323: C语言中,何为素数?何为非素数?用C语言如何表示? -
化尤法洛: C语言中的素数和数学中的素数是一样的,即:除了1和它本身之外,不能被任何数整除的数(1不是素数).也就是说素数是这样的整数,它除了能表示为它自己和1的乘积以外,不能表示为任何其它两个整数的乘积. 非素数的定义就很明了了,素数以外的数都是非素数,在C语言中,求素数的方法,就是从2开始,依次判断该数是否可以被2以上到该数以下的数整除,如果可以,就不是素数,如果不可以被所有大于或等于2小于该数的整数整除,那么就是素数了

宿城区17128557323: 如何编写一个C语言程序判断一个数是否是素数? -
化尤法洛: 1. 思路1: 判断一个整数m是否是素数,只需把m被 2 ~ m-1 之间的每一个整数去除,如果都不能被整除,那么m就是一个素数.代码如下: #include <stdio.h> int main(){ int a=0; // 素数的个数 int num=0; // 输入的整数 printf("输入一个整数...

宿城区17128557323: C程序 编写函数判断某数是否是素数,是返回1,否则返回0 -
化尤法洛: #include <iostream> #include <string.h>using namespace std;int Prime(int a) {if(a==1) return 1;int i;for(i=2;i*i<=a;i++)if(a%i==0) return 0;return 1; } int main() {int a;while(scanf("%d",&a)!=EOF){int ans=Prime(a);printf("%d\n",ans);}return 0; }有问题欢迎继续提问,Prime函数就是我写的

宿城区17128557323: c语言,写一个函数,判断该数是不是素数并且输出该素数(函数返回值是素数,不是0或1)? -
化尤法洛: 判断素数最直观的思路是,从2开始到n-1找有没有能被n整除的,没有的话n就是素数,根据数学知识,如果2到根号n范围内没有数能被n整除,n就是素数.#include<stdio.h> int prime(int n) { int i; for(i=2;i*i<=n;i++) { if(n%i==0) //如果n能整除i,n就...

宿城区17128557323: 判断是否为素数,C语言编程 -
化尤法洛: 你要判断1 , 1不是素数, 你的程序中是素数

宿城区17128557323: C语言素数的判定 -
化尤法洛: i=4时 { tag=0; k={2,3} k=2时 i%2==0 tag=1 此时tag不等于0 不输出4 } i=5时 { tag=0; k={2,3,4} i%k不等于0 tag=0 输出 5 }以此类推~ 呵呵

宿城区17128557323: C语言编程:输入一个数判断是否为素数(质数),输出判断结果信息(prime number素数). -
化尤法洛:[答案] #include "stdio.h" #include "math.h" main() {int i,n,flag=1; printf("Please Input a number:"); scanf("%d",&n); for (i=2;i

宿城区17128557323: 用C语言判断输入的数是否是素数 -
化尤法洛: #include <stdio.h>#include <math.h> //for double sqrt(double x) int main() { int T,x,i,flag; scanf("%d",&T);//T 测试次数 while(T--) { scanf("%d",&x); if(x < 3) flag = 0; else flag = 1; for(i = 2;i <= sqrt(x) && flag;i++) flag = (x%i); if(flag) printf("%d是素数\n",x); else printf("%d不是素数\n",x); } return 0; }

宿城区17128557323: C语言中素数判断 -
化尤法洛: 是素数就返回1,不是的话返回0. int IsPrime(int n) { int i; if (n == 1 || n == 2 || n == 3 || n == 5) return 1; else if (n % 2) { for (i = 3; i <= n / 2 + 1; i += 2) { if (n % i == 0) return 0; } return 1; } else { return 0; } }

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