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;
}