当前位置:首页 » 编程语言 » c语言丑数

c语言丑数

发布时间: 2022-08-18 21:09:31

A. 3道c语言编程题,希望你们能帮助我

1.
#include <stdio.h>

int main()
{
int n,m,count=0;
scanf("%d",&n);
m = n;
while(m%2==0) m/=2;
while(m%3==0) m/=3;
while(m%5==0) m/=5;
while(m%7==0) m/=7;
if(m!=1)
{
printf("no\n");
return 0;
}
for(m=1;m<=n/2;m++)
{
if(n%m==0)
count++;
}
printf("%d\n",count);
}

----

2.
#include <stdio.h>
#include <math.h>
int main()
{
int n,m;
double temp;
scanf("%d",&n);
temp = sqrt(double(n));
for(m=2;m<=temp;m++)
{
if(n%m==0)
{
printf("no\n");
return 0;
}
}
printf("yes\n");
}

-----

3.
#include <stdio.h>

int main()
{
char s[1000];
char word[1000];
char* p;
int count = 0;
gets(s);
p = s;
while(sscanf(p,"%s",word)==1)
{
count++;
while(*p==' ') p++;
while(*p!=' '&&*p!=0) p++;
}
printf("%d\n",count);
}

B. C语言编程:输入两个正整数m和n,求它们的最大公约数。

代码及注释如下:

#include <stdio.h>

int GCD(int a,int b)//定义函数,用来计算最大公约数

{

return b==0?a:GCD(b,a%b);

//此处使用了递归,如果b=0,返回a为最大公约数,否则,一直以b与a%b赋给函数,实现辗转相除

}

int main()

{

int a, b ; //定义实参a, b

int answer ; //定义最后结果

scanf ( "%d%d" , &a, &b) ; //取a,b的值

answer = GCD (a, b) ; //把结果赋给answer

printf ( "%d与%d的最大公约数为%d " , a , b , answer ) ; //输出结果

}

(2)c语言丑数扩展阅读:

辗转相除法求最大公约数的原理:

因为对任意同时整除a和b的数u,有a=su,b=tu,它也能整除r,因为r=a-bq=su-qtu=(s-qt)u。

反过来每一个整除b和r的整数v,有 b=sv , r=tv,它也能整除a,因为a=bq+r=svq+tv=(sq+t)v。

因此a和b的每一个公因子同时也是b和r的一个公因子,反之亦然。

这样由于a和b的全体公因子集合与b和r的全体公因子集合相同,所以a和b的最大公因子必须等于b和r的最大公因子,这就证明了上边的等式。即(a,b)=(b,r)。

因而,可以由此,得到两个数的最大公约数。

C. c语言程序要求“输入一个n数输出第n个丑数。丑数是素因子只有2.3.5.7”如何操作

#include<iostream>

#include<climits>

usingnamespacestd;

//遍历法找丑数

intIsUgly(intnum)//判断是否是

{

while(num%2==0)

{

num/=2;

}

while(num%3==0)

{

num/=3;

}

while(num%5==0)

{

num/=5;

}

if(num==1)

return1;

else

return0;//notanuglynumber

}

voidGetUglyNumber(intindex)

{//找到第index个丑数

inti,time=0;

if(index<1)

{

cout<<"errorinput"<<endl;

exit(EXIT_FAILURE);

}

for(i=1;i<INT_MAX&&time<index;i++)

{

if(IsUgly(i))

{

time++;

//cout<<i<<"";

}

}

cout<<i-1<<endl;

}

intmain()

{

intNumber;

cout<<"Inputanumber:";

cin>>Number;

GetUglyNumber(Number);

return0;

}

Inputanumber:7

8

Pressanykeytocontinue

D. c语言程序,要求输入一个n数输出第n个丑数。丑数是素因子只有2.3.5.7。非常急,谢谢。

含因子2,3,5的正整数被称作丑数 不含7 1不是丑数。

判断方法

首先除2,直到不能整除为止,然后除5到不能整除为止,然后除3直到不能整除为止。最终判断剩余的数字是否为1,如果是1则为丑数,否则不是丑数。

你的题目是不是输入n个整数,输出所有丑数。

#include<stdio.h>
intiscn(intnum);
#definemaxSize10//输入的最大数字个数可修改
intmain()
{
intcnum[maxSize],num,i,j=0;
printf("输入最多%d个正整数(不足%d个,可以输入负数结束输入): ",maxSize,maxSize);
for(i=0;i<maxSize;i++)
{
scanf("%d",&num);
if(num<0)
break;
if(iscn(num))
cnum[j++]=num;
}
printf("其中所有丑数为: ");
for(i=0;i<j;i++)
printf("%d",cnum[i]);
return0;
}
intiscn(intnum)//检查整数是否为丑数是返回1不是返回0
{
intchu;
chu=num;
if(num==1)
return0;
while(1)
{
if(chu%2==0)
chu=chu/2;
else
break;
}
while(1)
{
if(chu%5==0)
chu=chu/5;
else
break;
}
while(1)
{
if(chu%3==0)
chu=chu/3;
else
break;
}

if(chu==1)
return1;
else
return0;
}

E. 请教一简单c语言问题:下面求1~1500丑数编程哪错了😭

#include<stdio.h>
boolIsUgly(intnumber)
{
while(number%2==0)
number/=2;
while(number%3==0)
number/3=;
while(number%5==0)
number/5=;
return(number==1)?true:false;
}
intmain()
{
inti;
for(i=0;i<1500;i++)
{
if(IsUgly(i)==1)
printf("%d ",i);
}
return0;
}

我按照你的截图运行了一下,报错没有定义IsUgly;是因为VC6.0没有bool的头文件,所以你使用bool是不对的;

我根据你的程序改进了一下,我们使用bool是为了得到返回值1或者0;

那么我可以尝试将bool改成int,在最后判断number是否是1的时候,返回1或者0;

下面是我改进的代码,

#include<stdio.h>
intIsUgly(intnumber)//将bool改成int定义IsUgly函数
{
while(number%2==0)
number=number/2;
while(number%3==0)
number=number/3;
while(number%5==0)
number=number/5;
return(number==1)?1:0;//如果number==1,返回1,否则返回0
}
intmain()
{
inti;
for(i=2;i<=1500;i++)//0除以2是0,0除以2的余数还是0,所以如果i=0,就是死循环,
//因为1不是丑数,所以建议从2开始循环;1-1500应该是包含1500的
//并且1500也是丑数,所以是小于等于1500
{
if(IsUgly(i)==1)
printf("%d ",i);
}
return0;
}

F. java和C语言有什么区别

java是面向对象的编程语言。c是面向过程的编程语言,而且JAVA是可以跨平台的。而C语言不能,但能够直接操作硬件,并且生成机器码的效率高。C语言有指针,想要学好C语言,指针就必须学好。JAVA是没有指针的。在C语言中,是可以不初始化使用的,而在JAVA中,是必须初始化值的。总的来说,C语言是基础语言,JAVA是面向对象的一门语言。

G. C/C++ 基于NTFS数据流隐藏文件的代码(难题,勿灌水)

直接网络搜索黑客防线ntfs数据流,在我的印象中08年以前的期刊中有不下3篇是讨论ntfs数据流隐藏的。记得有一篇是NTFS数据流的创建与检测的文章,是C++写的代码,你从网上找一下源码

H. 编程实现计算正整数NUM的各个位上的数字之积。 例如: 如输入:123,则输出应该是:6

不知道你要用什么语言实现。那就用C吧
#include <stdio.h>
int main()
{
int NUM = 21456; //你设定的正整数
int tmp1,tmp2,idx=0;
int result = 1;
tmp1 = NUM;
while(tmp1> 0)
{
tmp2 = tmp1%10;
result = result * tmp2;
tmp1 = (int)(tmp1 /10); //除去最未末位
}
printf("The NUM is %d, and the result is %d\n",NUM,result);
return 0;
}

热点内容
锐程cc尊贵版都有哪些配置 发布:2025-01-19 18:27:08 浏览:977
php手机网站 发布:2025-01-19 18:26:34 浏览:456
一加存储路径 发布:2025-01-19 18:21:01 浏览:446
sqlserver误删 发布:2025-01-19 18:21:00 浏览:649
球球安全中心动态密码在哪里 发布:2025-01-19 18:20:23 浏览:790
python读取config文件 发布:2025-01-19 18:15:10 浏览:458
android生成so 发布:2025-01-19 18:14:33 浏览:697
比亚迪汉ev家用哪个配置值得 发布:2025-01-19 18:08:02 浏览:382
aspnet批量上传文件 发布:2025-01-19 17:59:36 浏览:395
攻击服务器ip会不会判刑 发布:2025-01-19 17:59:28 浏览:32