c语言编程:输入一个正整数n,判断它是否为素数
将:for(k=2;k<=x[i]-1;k++)改成:for(g=0,k=2;k<=x[i]-1;k++)主要是在这个for循环前令g=0。
因为输入的不止一个数,开头的初始化g=0,在第一个数的时候就可能已经被改了。后面的数不重新初始化g=0,就不能保证对了。
判断一个正整数n是不是素数的思路:
思路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 之间有无因子即可。
正确代码如下:
#include/*sqrt*/
#include/*scanf,printf,system*/
int isPrime(int n)//判断n是否为素数,如果是则返回1,否则返回0。
{
if(n<=1)return 0;//小于等于1直接退出。
int i;
for(i = 2; i <= (int)sqrt(n); i ++)//从2到算术平方根遍历。
if(!(n%i)) return 0;//存在约数,不是素数,返回0。
return 1;//不存在约数,返回1,表示为素数。
}
main ()
{
int num;
scanf ("%d", &num);
if ( isPrime( num) )//num是素数。
printf ("%d is a prime",num);
else
printf ("%d isn't a prime",num);//num不是素数。
system("PAUSE");//暂停界面。
return 0;
}
扩展资料:
输入一个正整数或0,判断是否为质数:
#include "stdio.h"
int main()
{
while(1)
{
int n,flag,i;
printf("请输入一个数:");
scanf("%d",&n);
flag = n/2+1;
if(n==0||n==1)
printf("%d既不是质数也不是合数
",n);
else if(n==2)
printf("%d是质数
",n);
else
{
for(i=2;i<=flag;i++)
{
if((n%i)==0)
{
printf("%d不是质数,是合数
",n);
break;
}
if(i==flag&&(n%i)!=0)
printf("%d是质数
",n);
}
}
}
}
#include
#include
int shu(long unsigned num) //判断一个给定的数num是不是素数
//是返回1,否则返回0
{
int t,i;
t=sqrt(num)+1;
for(i=2;i<t;i++)
{
if(num%i==0)
break;
}
if(i==t)return 1;
return 0;
}
int main()
{
int n;
printf("请输入任意一个正整数:");
scanf("%d",&n);
if (shu(n))
printf("
%d是素数!",n);
else
printf("
%d不是素数!",n);
return 1;
}
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int a,b,i,flag=true;
cin>>a;
b=sqrt(a);
for(i=2;i<=b;i++)
{
if(a%i==0)
{
flag=false;
break;
}
}
if(flag)
{
cout<<a<<"是素数"<<endl;
}
else
{
cout<<a<<"不是素数"<<endl;
}
return 0;
}
扩展资料:
其他方法判断一个数是否是素数:
/**
* 判断一个数是否为素数
* @param n
* @returns {boolean}
*/
var isPrime = function (n) {
if ( n === 0 || n === 1){
return false;
}
for (var i = 2; i <= Math.sqrt(n); i++) {
if (n % i === 0) {
return false;
}
}
return true;
}
#include <stdio.h>
#include <stdlib.h>
void main()
{
int n,r,i;
printf("输入 n:");
scanf("%d",&n);
for(i=2;i<=n-1;i++)
{
r=n%i;
if(r==0)
break;
}
if(i>=n)
printf("n=%d,是素数
",n);
else
printf("n=%d,不是素数
",n);
}
#include<math.h>/*sqrt*/
#include<stdio.h>/*scanf,printf,system*/
int isPrime(int n)//判断n是否为素数,如果是则返回1,否则返回0.
{
if(n<=1)return 0;//小于等于1直接退出
int i;
for(i = 2; i <= (int)sqrt(n); i ++)//从2到算术平方根遍历。
if(!(n%i)) return 0;//存在约数,不是素数,返回0.
return 1;//不存在约数,返回1,表示为素数。
}
main ()
{
int num;
scanf ("%d", &num);
if ( isPrime( num) )//num是素数
printf ("%d is a prime",num);
else
printf ("%d isn't a prime",num);//num不是素数
system("PAUSE");//暂停界面
return 0;
}
#include <stdio.h>
#include <math.h>
int main(void)
{
int nNum;
int i;
int m;
printf("请输入这个数:
");
scanf("%d", &nNum);
m = sqrt(nNum);
for (i = 2; i < m; i++)
{
if (nNum % i == 0)
{
printf("这个数(%d)不是素数!
", nNum);
return 0;
}
}
printf("这个数(%d)是素数!
");
return 0;
}
// 不懂请追问
这个程序是求100以内的素数。希望你在这个基础上根据你的需要进修修改。这样你既能参考也能学习哈~~~
#include "stdio.h"
void main()
{
int x,y,i,j;
for(i=2;i<=100;i++)
{
x=i;//将i赋值给x保存。
y=0;//将y的数值清零
for(j=1;j<=x;j++)
{
if((x%j)==0) y++;
}
if(y==2)
printf("%5d",x);
}
}
编程,输入一个正整数,输出它的所有质数因子(如180的质数因子为2、2...
public class Main{ public static void main(String[]args){ Scanner str=new Scanner(System.in);long num=str.nextLong();String result=getResult(num);System.out.println(result);} public static String getResult(long num){ int pum=2;String result="";while(num!=1){ while(num%pum...
c语言编程 从键盘中输入一个偶数,编程实现将该偶数拆分成两个素数之...
include<stdio.h> int isprime(int n){ int i;for(i=2;i<=n\/2;i++)if(n%i==0)return 0;return 1;} void main(){ int n,i;scanf("%d",&n);for(i=2;i<n\/2;i++)if(isprime(i) && isprime(n-i))printf("%d %d\\n",i,n-i);} ...
c语言编程:给一个不多于五位的正整数,用if-else语句求出它是几位数...
可以参考下面的代码:include <stdio.h> void main(){ int num; printf("请输入一个不大于5位数的正整数:");scanf("%d",&num);if(num>99999||num<1)printf("您的输入有误!\\n");else { if(num<10)printf("您输入的是1位数!\\n");else if(num<100)printf("您输入的是2位数!\\n...
c语言。编程题:输入一个正整数n(大于一小于九),输出九九乘法口诀表的前...
include "stdio.h"void main(){ int a[9][9]; int i,j,x=0,n; scanf("%d",&n); for(i=0;i<9;i++) for(j=0;j<i+1;j++) a[i][j]=(i+1)*(j+1); for(i=0;i<9;i++) { for(j=0;j=n)break; } printf("\\n");...
C语言编程,输入一个学生的姓名、学号、英语、数学、计算机成绩,输出学生...
"Score:%5.2f\\n",aver);} 输入:Please input student's name:Lihua Please input student's number:123456789 Please input student's English score:80.5 Please input student's Math score:91 Please input student's Computer score:89.5 输出:Name:Lihua NUmber:123456789 Score:87.00 ...
c语言编程题 输入一字符串,判断该字符串是否为回文。
include <stdio.h> include<stdlib.h> int main(){ char a[100];int i=0,j=0;printf("请输入字符串:\\n");gets(a);while(a[i]!='\\0')i++;i--;for(;j<=i;i--,j++){ if(a[i]!=a[j]){ break;} } if(j<=i){ printf("不是回文串\\n",a);} else { printf("是...
编程从键盘输入一个三位数,将它们逆序输出。如输入123,输出321.谢谢...
void main(){int x,a,b,c;cin>>x;a=x\/100;b=x\/10%10;c=x%10;cout<<c*100+b*10+a<<endl;例如:include<stdio.h> int main(){ int a,b,c,t;scanf("%d",&a);b=a%10;c=(a-b)%100;t=a\/100;printf("b=%dc=%dt=%d",b,c,t);return 0;} ...
C语言编程在键盘上输入一个字符如果不是英文字母就要求重新输入,怎么...
大体思路是把输入的字符传如一个变量 判断变量的ACSII就可以了 例:include <stdio.h> void main(){ char d;scanf("%s",&d);while(d<97||d>123)\/\/小写字母a是97,大写为65 { printf("\\n输入有误 从新输入:");scanf("%c",&d);} printf("%c\\n",d);} ...
C语言编程。。从键盘输入一个整数,求其平方并输出..
include <conio.h> int main(void){ int a;printf("请输入一个整数:");scanf("%d",&a); \/ *标准输入函数,从键盘输入一个整数,复制给a *\/ printf("运行结果是:%d*%d=%d\\n",a,a,a*a);system("PAUSE");return 0;}
c语言编程,请输入一个华氏度。
程序如下:include <stdio.h> int main(){ int f;float c;printf("请输入一个华氏温度\\n");scanf_s("%d", &f);c = (float)(f - 32) * 5 \/ 9;printf("它的摄氏温度为:%.2f", c);} 如图:调试通过:
撒省岳源: #include <stdio.h> #include <stdlib.h> int main() { printf("请输入一个正整数:"); int n1,n2; bool flag1 = false,flag2 = false; scanf("%d",&n1); n2 = n1; while(n1) { if((n1%10)%2) flag1 = true; else flag2 = true; n1 = n1/10; } if(flag1 && flag2) ...
本溪满族自治县18441042726: C语言编程判断输入的正整数是否为素数. - ?
撒省岳源: 最简单的思路,就除,如果存在本身以外因子,就不是质数,否则是质数.代码: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("%d 是质数\n", n); else printf("%d 不是质数\n", n); }
本溪满族自治县18441042726: 从键盘输入一个正整数n,编程判断这个数是否同时含有奇数字和偶数字 - ?
撒省岳源: #include<stdio.h> void main() {int y,f0=0, f1=0, x;printf("intput a number:\n");scanf("%d",&y);while(y>0){x=y%10;x%2==0?f0++:f1++;y=y/10;}if(f0!=0&&f1!=0) printf("这个数同时含有奇数字和偶数字\n");else printf("这个数不是同时含有奇数字和偶数字\n"); }
本溪满族自治县18441042726: 编写一个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");
本溪满族自治县18441042726: C语言:输入一个正整数n,再输入n个正整数,判断它们是否为素数. - ?
撒省岳源: 使用了数组的动态分配,看不懂的话我还有其他方案 #include #include bool prime(int num) { bool flag=true; if(num<2) flag=false; else { for(int i=2;i
本溪满族自治县18441042726: 简单的c语言题目:输入一个正整数,判断是奇数或偶数、负数或非负数. - ?
撒省岳源: #include<stdio.h>int main(void) {int number,a;scanf("%d",&a);if(a%2==0)printf("偶数!");elseprintf("奇数!");if(a==0){printf("\n0既不是整数也不是负数"); goto ab;}if(a<a*10)printf("\n正整数");elseprintf("\n负整数");ab:return 0; }
本溪满族自治县18441042726: 输入1个整数,判断该数是奇数还是偶数.(用C语言编程) - ?
撒省岳源:[答案] #include void main() { int n; printf("输入一个整数:"); scanf("%d",&n); if(n%2==0) { printf("%d是偶数\n",n); } else { printf("%d是奇数\n",n); } }
本溪满族自治县18441042726: 由键盘输入一个正整数,判断该数是否为平方数,是输出Y,否则输出N.C语言怎么编程 - ?
撒省岳源: 楼主你好.很简单:#include <stdio.h>#include <math.h> int main(){ int input; while(1){ scanf("%d",&input); if(input<=0){//判断用户输入是否为正整数 printf("Please input a positive integer!\n"); continue; } printf("%c\n",(pow((int)sqrt(input),2)...
本溪满族自治县18441042726: 寻求C语言程序设计代码:实现“输入一个正整数,判断该数是否为平方数,是就输出Y ,否则输出N”. - ?
撒省岳源: #include#include #include int main() { int n; double m; scanf("%d",&n); m=sqrt(n); if(m==floor(m+0.5)) //将n平方根与n的平方根的整数部份进行比较 printf("yes"); //若二者相等,则为平方数 else printf("no"); }
本溪满族自治县18441042726: c语言,输入一位正整数n,输入整数m,在整数m的每个位数中查找是否有数n,则输出找到数值n, - ?
撒省岳源: 设置一个flag=0,找到则将flag设为1.最后判断flag的状态输出找到或未找到.