|
Member 11161625 wrote: for (int j = 2; j <= 100; j++)
No number is ever going to be evenly divisible by anything greater than itself, so you can eliminate those numbers from your loop:
if (int j = 2; j < i; j++)
But we can do better than that.
If i is evenly divisible by a number greater than the square root of i , then it will also be evenly divisible by a corresponding number less than the square root of i . Therefore, we can ignore all numbers greater than the square root:
int squareRoot = (int)Math.Floor(Math.Sqrt(i));
for (int j = 2; j < squareRoot; j++)
But we can still do better.
Currently, you're checking for divisibility by every number in the range. But if it's not divisible by 2, then it won't be divisible by any multiple of 2. Using the Sieve of Eratosthenes[^], you can eliminate all multiples of the prime numbers, leaving just the prime numbers:
var notPrime = new HashSet<int>();
for (int i = 2; i <= 100; i++)
{
if (!notPrime.Contains(i))
{
Console.WriteLine("\t{0}", i);
for (int j = i * 2; j <= 100; j += i)
{
notPrime.Add(j);
}
}
}
There are other even more efficient ways to find prime numbers, but they tend to be much more complicated, and would be overkill for a simple scenario like this.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
What this code is telling me is: since November, last year, you have racked-up a very large number of down-votes on a large number of questions in most of which you have demonstrated you have made very little effort to educate yourself.
It is time for you to make a decision to go to work doing the basic study that anyone has to do to become competent, at an entry level, in mastering any program language (or any subject matter).
When you have code like the code shown here (relatively simple), put it in a C# project, and put break-points in it, run the code, single-step through it (F11 in Visual Studio) observing how the values of variables change, and what the flow-of-control is.
Every time you see something that puzzles you like the character "%" : select the character, or whatever: hit the F1 key and go to the built-in help browser (or go-on-line and look it up) : read the relevant content, think about it.
Study, experiment, observe, refine, analyze, conclude ... repeat this forever with enthusiasm ... that is the only way to achieve any competency. CodeProject, StackOverflow, MSDN, blog sites (many exceptionally good blog sites run by Indians who are also regulars on CodeProject): these resources are amazingly deep, and can support you in whatever you pursue with C# and .NET.
Get a good fundamental book on C# .NET and read: alternate reading with trying out small code experiments directly related to what you read. Charles Petzold's ".NET Book Zero" is a free on-line download, and a good resource. Look in the "Free Tools" forum here for my previous post (January 11, 2015) on a free (English) book on C# by an association of programmers in Bulgaria.
"If not you, who ? If not now, when ?"
«In art as in science there is no delight without the detail ... Let me repeat that unless these are thoroughly understood and remembered, all “general ideas” (so easily acquired, so profitably resold) must necessarily remain but worn passports allowing their bearers short cuts from one area of ignorance to another.» Vladimir Nabokov, commentary on translation of “Eugene Onegin.”
|
|
|
|
|
Such sage advice which, being the 5th response and does not include any code will probably not have the least impact on such as the OP.
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
I don't know why, Mycroft, that your comment brought to my mind Milton's great sonnet on his blindness, specifically the final line: "They also serve who only stand and wait."
"Least impact" could well describe my total presence on CodeProject
... and ... yet ...
cheers, Bill
«In art as in science there is no delight without the detail ... Let me repeat that unless these are thoroughly understood and remembered, all “general ideas” (so easily acquired, so profitably resold) must necessarily remain but worn passports allowing their bearers short cuts from one area of ignorance to another.» Vladimir Nabokov, commentary on translation of “Eugene Onegin.”
|
|
|
|
|
|
this what i have and want:
i'm working on a program (c#) that an xml file that inside have this info: action(del, add, update), tablename, records(rows).
am using EF 6.1.3 but until now i can do those action for each table but my system have more than 100 table and there a lot of code to write to make CRUD foreach table.
my question is if there is a way to make a dynamic procedure that receive a node of the xml file (any node) an process that info?
Thanks
|
|
|
|
|
You could just dynamically build the SQL query strings, although this is a method that is usually frowned upon.
Linq/EF doesn't have any built-in way of building the query dynamically as far as picking which table you're going to query. You can build everything else in the query dynamically though. To keep things simple, I'd separate these operations into different methods instead of trying to cram everything into a single method that builds any kind of query. One method per query type will make your life much easier.
|
|
|
|
|
because it is frowned upon and is not a good programming practice is that I'm looking for variants to make it, thanks for the comment. I will keep looking for another way or someone who can help me.
|
|
|
|
|
Good luck, you're going to need it. I don't know of any way of creating a LINQ query with the table name being specified dynamically.
That's why I said go with the string concatenation method.
|
|
|
|
|
Thanks, someone told me about "Reflection" i've been reading this morning about it but still am looking for. i know i have a hard mission. if i find another way i'll let you know.
|
|
|
|
|
Reflection is not going to help you in this case.
Well, more accurately, I should say that it is going GREATLY increase the level of complexity so much so as to be far more code than if you just wrote the statements using string concatenation.
|
|
|
|
|
OK, i'll follow your advice. thanks for all.
|
|
|
|
|
I'm no EF-expert but I have some experience with dynamically building query expressions. As Dave already said there's no inbuilt solution in EF for this, I'm pretty sure this would be your only alternative to constructing SQL statements:
For deletion: Build query expressions (the where-clause) dynamically using System.Linq.Expressions. Execute the query and Remove(..) the returned entities. *
For updating: Build query expressions (the where-clause) dynamically using System.Linq.Expressions. Execute the query and update the entities via Reflection. *
For adding: Create the entities via Reflection, set their properties via Reflection and Add(..) them.
For all this you would have to discover the DbSet<EntityName> -properties and Entity-types in your DbContext-class via Reflection. If the names of the properties don't exactly match those in your XML you would need to manually build a mapping dictionary.
99% sure this would work but it's a pretty big task and since (as I already saw from your last reply to Dave) you're not experienced with Reflection, I assume you would be done faster with constructing SQL statements. If you want to give this a try anyway, feel free to ask for more advice.
* Edit:
Instead of dynamically builing the query expressions you also could just "dumbly" loop over all entities in a DbSet and "scan" for those which should be deleted/updated by reading their properties with Reflection.
If the brain were so simple we could understand it, we would be so simple we couldn't. — Lyall Watson
modified 17-Feb-16 12:05pm.
|
|
|
|
|
Thanks it seems that i going to follow your advice and Dave too. I'll review my notes and make an algorithm to reach my idea with your advices.
You are right i don't know anything at all about Reflection.
Thanks again
|
|
|
|
|
You can use the
DbSet = DbContext.Set(type) method to get a "non-generic" DbSet for the specified type; and which you can then use in "generic" CRUD operations like
DbSet.Add(object)
|
|
|
|
|
Very excited as you may understand - never used it before but read a lot about it. Any tips to get started?
|
|
|
|
|
Execute "Setup.exe"?
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
Ian Klek wrote: Any tips to get started? Don't blindly accept all its suggestions. I know that there are people who think that, out of the box, R# will make your code better. It won't - in some cases, you can end up obfuscating some extremely straightforward code which can end up making maintenance much harder.
Saying that, if you accept the R# keyboard mappings, Ctrl+T will become your best friend. Go ahead, try it.
This space for rent
|
|
|
|
|
After that, try Alt-\
And then, Shift-F12, and then Alt-`
That should be enough from the first month or so
Best,
John
-- Log Wizard - a Log Viewer that is easy and fun to use!
|
|
|
|
|
- Install
- Fiddle around
- Realize how it bogs down Visual Studio
- Uninstall
If the brain were so simple we could understand it, we would be so simple we couldn't. — Lyall Watson
|
|
|
|
|
Not to mention the endless list of underlined 'suggestions' that it gives you making it harder to spot the underlined 'syntax errors.' I have had colleagues that used it and, in my opinion, didn't really do much to improve the code besides pointing out where you could've saved lines using the ? and ?? operators and a million suggestions to use var.
if (Object.DividedByZero == true) { Universe.Implode(); }
|
|
|
|
|
Read trough the documentation of the options very carefully...Learn all the options it has and decide what to use and how...
By default R# use a sometime very dumb rule-set, and the suggestions suffer from it...So configure it for your need...
And even that, review all suggestions (and do not accept them as is) until you are feel, that you trust it...
Skipper: We'll fix it.
Alex: Fix it? How you gonna fix this?
Skipper: Grit, spit and a whole lotta duct tape.
|
|
|
|
|
Lucky you ! This is a great tool; it is deep, with a staggering variety of options.
imho, well worth the time to study how to use it, and to configure its options carefully.
cheers, Bill
«In art as in science there is no delight without the detail ... Let me repeat that unless these are thoroughly understood and remembered, all “general ideas” (so easily acquired, so profitably resold) must necessarily remain but worn passports allowing their bearers short cuts from one area of ignorance to another.» Vladimir Nabokov, commentary on translation of “Eugene Onegin.”
|
|
|
|
|
Ian Klek wrote: Any tips to get started? Yes. Get a really fast machine.
/ravi
|
|
|
|
|
Don't forget installing enough memory to keep Google running for the next 30 years.
This space for rent
|
|
|
|