第六十八课 编程题(因数和质数)
1. 假设有个隧道,隧道以字符‘#’结束。挖矿的过程中,会遇到钻石‘*’和美金‘1’~‘9’,让矿工小六挖到隧道的尽头,假设每个钻石价值500美金,统计小六挖到了价值多少美金的收获。
样例输入:ka4d*s6kkl8s*d9fyo#
样例输出:1027
char c;
int number = 0;
int temp = 0;
int he = 0;
do
{
c = (char)Console.Read();
if (c >= '0' && c <= '9')
{
int num = c - '0';
number += num;
}
if (c == '*')
{
temp += 500;
}
} while (c != '#');
he += (number + temp);
Console.WriteLine(he);
还是练练do...while吧,嘿嘿!
修改:
char c;
int number = 0;
int he = 0;
do
{
c = (char)Console.Read();
if (c >= '0' && c <= '9')
{
int num = c - '0';
number += num;
}else
if (c == '*')
{
number += 500;
}
} while (c != '#');
Console.WriteLine(number);
number在语句执行中可以反复使用,不用在另定义一个变量了。if语句的使用时,如果只有两个分支条件,最好使用if...else if。
2. 输入一个整数,输出该整数的因数个数和所有因数,输入的整数大于0,小于100000
样例输入9
3
1 3 9
int n= Convert.ToInt32(Console.ReadLine());
int temp = 0;
for (int i = 1; i <= 100000; i++)
{
if (n % i == 0)
{
Console.Write(i + " ");
temp += 1;
}
}
Console.WriteLine();
Console.WriteLine(temp);
因为先输出的因数后输出的因数个数,这样的方法不符合题中的要求。
修改为:
int n= Convert.ToInt32(Console.ReadLine());
string cc = "";
int temp = 0;
for (int i = 1; i <= 100000; i++)
{
if (n % i == 0)
{
cc += i + " ";
temp += 1;
}
}
Console.WriteLine(temp);
Console.WriteLine(cc);
其实我一直有个认识误区,种以为用字符串来输出算是偏门的方式,现在理解了,只要编译简单,逻辑合理,结果输出无误,那么任何方法都可以用,它们都一样。
3. 输入一个正整数,判断该数是否是质数,输入的数字大于0,小于100000.
如果为质数输出yes,如果不是则输出no。
样例输入 103
输出yes
nt n = Convert.ToInt32(Console.ReadLine());
int temp = 0;
for(int i = 1; i <= 100000; i++)
{
if (n % i == 0)
{
temp++;
}
}
if (temp == 2)
{
Console.Write("yes");
}
else
{
Console.Write("no");
}